在SQL Server 2008中仅存储月份和年份?

时间:2011-10-20 23:20:56

标签: sql sql-server-2008

是否可以使用常规日期时间在SQL Server 2008中保存月份/年份?我不需要时间戳,列将存储唯一的mo / yr组合(即10-11,11-11,12-11等)。

有什么建议吗?

5 个答案:

答案 0 :(得分:14)

在不知道预期用途的情况下,无法正确建议。但是,至少可以通过三种方式轻松存储月份和年份:

  • 使用日期字段,但始终在午夜的第一天存储;然后始终自定义格式化显示日期字段
  • 添加整数年和月字段,并通过拆分日期填充它们
  • 添加一个整数字段,您可以将其编码为年* 100 +月或其他一些有用的方案

答案 1 :(得分:2)

无论如何,Sql Server都会完整地存储日期时间数据(年 - 月 - 日小时:min:sec.milliSec)。

当您存储日期时,您可以将该日期定为该月的第1天。只需在查询时格式化日期。

http://www.sql-server-helper.com/tips/date-formats.aspx

答案 2 :(得分:1)

您只能在DateTime列中存储年份和月份。那么,你可以做的是默认其余的值。即:2011.10.1.1,2011.11.1.1就是这样。

或者您可以将其存储为字符串。

答案 3 :(得分:1)

从SQLServer 2008开始:

另存为Date列并添加以下检查约束,以确保该值始终是该月的第一天:

  

datepart(month,MyDate)<> datepart(month,dateadd(day,-1,MyDate))

答案 4 :(得分:0)

SELECT RIGHT(CONVERT(VARCHAR(10), GETDATE(), 105), 7) AS [MM-YYYY]

您应该尝试这个