在SQL Server 2008中只存储月份和年份?
是否可以使用常规日期时间在SQL Server 2008中保存月/年?我不需要时间戳,该列将存储唯一的mo/年组合(即10-11、11-11、12-11等)在SQL Server 2008中只存储月份和年份?,sql,sql-server-2008,Sql,Sql Server 2008,是否可以使用常规日期时间在SQL Server 2008中保存月/年?我不需要时间戳,该列将存储唯一的mo/年组合(即10-11、11-11、12-11等) 有什么建议吗 无论发生什么情况,Sql Server都将完整地存储日期时间数据(年-月-日-小时:分钟:秒。毫秒) 当您存储日期时,您可以将日期设为每月的第一天。当你进行查询时,只需格式化你想要的日期 在不知道预期用途的情况下,不可能正确地给出建议。但是,存储月份和年份至少可以通过三种方式轻松完成: 使用日期字段,但始终将每月的第一天午夜
有什么建议吗 无论发生什么情况,Sql Server都将完整地存储日期时间数据(年-月-日-小时:分钟:秒。毫秒) 当您存储日期时,您可以将日期设为每月的第一天。当你进行查询时,只需格式化你想要的日期
在不知道预期用途的情况下,不可能正确地给出建议。但是,存储月份和年份至少可以通过三种方式轻松完成:
- 使用日期字段,但始终将每月的第一天午夜存储在其中;然后始终自定义显示日期字段的格式
- 添加整数年和月字段,并通过拆分日期填充它们
- 添加一个整数字段,将其编码为年*100+月或其他一些有用的方案
或者可以将其存储为字符串。从SQLServer2008及以后的版本: 另存为
Date
列,并添加以下检查约束,以确保该值始终为月份的第一个:
datepart(month,MyDate)datepart(month,dateadd(day,-1,MyDate))
选择右侧(将(VARCHAR(10),GETDATE(),105),7)转换为[MM-YYYY]
你应该试试这个注意wallyk在他的第一个选项中提到了。这与日期时间字段不同。这三个选项都很有意义。如果您想知道如何将整数分解回年/月,这就是我使用csharp:year=birth/100;天=生日%100;我喜欢这种方法,但我认为更简单的检查约束是
DAY(MyDate)=1
。