Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 当日期为日/月/年格式时,sql server中出现意外的日期格式_Sql Server - Fatal编程技术网

Sql server 当日期为日/月/年格式时,sql server中出现意外的日期格式

Sql server 当日期为日/月/年格式时,sql server中出现意外的日期格式,sql-server,Sql Server,我在excel工作表中有要导入sql server的数据。excel工作表中的数据包含一些日/月/年格式的日期。sql server允许我按原样导入日期,并附加世纪,使之成为完整的四位数年份yyyy-mm-dd但在某些情况下,它猜对了,而在某些情况下,它猜错了 例如,我有一个日期列,其值如下 01/01/99 01/09/84 01/07/62 03/03/48 sql server为前三个值添加了正确的世纪前缀,但为sql server中添加的最后一个值添加了正确的世纪前缀,即2048-03

我在excel工作表中有要导入sql server的数据。excel工作表中的数据包含一些日/月/年格式的日期。sql server允许我按原样导入日期,并附加世纪,使之成为完整的四位数年份
yyyy-mm-dd
但在某些情况下,它猜对了,而在某些情况下,它猜错了

例如,我有一个日期列,其值如下

01/01/99
01/09/84
01/07/62
03/03/48
sql server为前三个值添加了正确的世纪前缀,但为sql server中添加的最后一个值添加了正确的世纪前缀,即
2048-03-03


这是为什么?我如何修复它。提前感谢您的帮助:)

这是因为您的服务器级别设置中的
两位数年份截止值
属性

如果转到SSM,请右键单击服务器名称-->属性-->高级选项卡

您将在那里看到一个值,我认为默认情况下它被设置为2049,这意味着如果您传递的值类似于您的格式dd/mm/yy,那么SQL Server将根据传递值中的yy值来完成年份位,其中yy值大于49,SQL Server假定它是19世纪

例如
01/01/99
将变成
01/01/1999

另一方面,如果YY的值小于49,Sql Server则假定它是20世纪

对于exmaple,在您的sql server中,
03/03/48
变成了
03/03/2048

修复

您可以减小截止年(如2020年)的范围,这意味着如果您的
YY
中有一个小于
01/01/20
的值,则sql server将假定该值为
01/01/2020
任何大于20的值都将假定为
19YY