Sql server 当日期为日/月/年格式时,sql server中出现意外的日期格式
我在excel工作表中有要导入sql server的数据。excel工作表中的数据包含一些日/月/年格式的日期。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
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