2

ここでは、比較的経験の浅い SQL ユーザーです。私がやりたいことは、毎年、月に 1 回だけエントリーすることです。SQLでこのようなdatetimeを使用する方法はありますか?

4

4 に答える 4

4

と列、およびに一意のインデックスをmonth追加します。例えば:year(year, month)

create unique index UX_YourTable_YearMonth on YourTable(year, month)
于 2012-11-19T17:39:31.713 に答える
1

私は間違いなく、日付を月の 1 日として保存できる単一の日付/時刻フィールドに保存します。
を使用して、日付を月の 1 日に簡単に変えることができます。DATEADD(month, DATEDIFF(month, 0, @mydate), 0)

日付フィールドを使用する利点は、Excel Pivot、Access、SQL Server Reporting Services などのほとんどのレポート ツールを使用して、任意の期間 (隔月、四半期など) でレポートを作成する際のグループ化が容易になることです。

于 2012-11-20T13:15:18.763 に答える
0

日付が常に同じ日時に挿入される場合は、可能です。たとえば、日付が常にこのように見える場合は、mm/01/yyyy 12:00:00これでうまくいきます。しかし、あなたの日付がこのようになるとは思えません。キーを2つの別々の列に配置することをお勧めしますmonth, year

于 2012-11-19T17:39:51.297 に答える
0

これには、日時またはタイムスタンプを使用しないことをお勧めします。代わりに、年と月に別々の列を使用してください。CHECK() 制約を使用して値を正常に保ちます。dbms が CHECK() 制約 (MySQL など) を強制しない場合は、有効な年と有効な月の追加のテーブルを作成し、それらへの外部キー参照を設定します。

create table your_table_name (
  year integer not null check (year between 2000 and 2050),
  month integer not null check (month between 1 and 12),
  -- Other columns go here.
  primary key (year, month)
);
于 2012-11-20T13:04:23.403 に答える