参见英文答案 >
What is the significance of 1/1/1753 in SQL Server?5个
MS doc表示ISDATE()
MS doc表示ISDATE()
Returns 1 if the expression is a valid date,time,or datetime value; otherwise,0
那么为什么在下面的例子中返回0?
DECLARE @DT VARCHAR(30) = '1/4/1752' SELECT ISDATE(@DT),TRY_CONVERT(DATE,@DT,101),TRY_CONVERT(DATETIME,@DT),TRY_CAST(@DT as DATE),TRY_CAST(@DT AS DATETIME)
回报
0 1752-01-04 NULL 1752-01-04 NULL
将日期更改为1753和…
1 1753-01-04 1753-01-04 00:00:00.000 1753-01-04 1753-01-04 00:00:00.000 select ISDATE('17521231'),ISDATE('17530101') gives 0 1
解决方法
如
documentation中所述,最早的datetime值为’1753-01-01′.
我建议你改用try_convert().这给你更多的灵活性:
try_convert(date,'17521231') is not null
日期数据类型可以追溯到第一年.