1950年之前的日期等于未来日期

时间:2012-03-21 13:33:24

标签: sql sql-server tsql

我需要将字符串日期转换为日期时间类型。

这是一个日期场景:

'19 -Apr-36'

DECLARE @strDate VARCHAR(25)
SELECT @strDate = '19-Apr-36'

SELECT CAST(@strDate as datetime)

导致未来日期为2036-04-19

这是如何正常处理的,还有其他警告吗?

2 个答案:

答案 0 :(得分:10)

默认情况下,SQL Server将当前世纪解释为36年。您需要明确说明1936或更改two digit year cutoff option

编辑:只是为了澄清一下 - 您不想在服务器范围内更改设置,并且会引起更多混乱,而不是帮助您。最好选择明确的日期。

答案 1 :(得分:1)

您可以设置世纪变化的年份

sp_configure 'two digit year cutoff', 2070
reconfigure