2

这里是相对缺乏经验的 SQL 用户。我想做的是每年每个月只有一个条目。有没有办法在 SQL 中使用这样的日期时间?

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

我肯定会将其存储在单个日期/时间字段中,您可以将日期存储为该月的第一天。
您可以使用DATEADD(month, DATEDIFF(month, 0, @mydate), 0)

使用日期字段的优势在于,它将使分组更容易使用大多数报告工具(如 Excel Pivot、Access、SQL Server 报告服务...

于 2012-11-20T13:15:18.763 回答
0

如果您的日期始终插入相同的日期和时间,则可以。例如,如果您的日期总是看起来像mm/01/yyyy 12:00:00这样,那就可以了。但是我怀疑你的日期会是这样的。我建议将密钥放在两个独立的列上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 回答