Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server 2008中只存储月份和年份?_Sql_Sql Server 2008 - Fatal编程技术网

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

在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 2008中保存月/年?我不需要时间戳,该列将存储唯一的mo/年组合(即10-11、11-11、12-11等)


有什么建议吗

无论发生什么情况,Sql Server都将完整地存储日期时间数据(年-月-日-小时:分钟:秒。毫秒)

当您存储日期时,您可以将日期设为每月的第一天。当你进行查询时,只需格式化你想要的日期


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

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

您不能只在日期时间列中存储年份和月份。那么,您可以做的是默认其余的值。ie:2011.10.1.112011.11.1.1类似的


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

从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