在SQL Server

问题描述 投票:0回答:1
Declare @var varchar(100)
set @var  = '2000'

select 
    case when ISDATE(@var) = 1 
           then 'Valid Date' 
         when ISDATE(@var) = 0 
           then 'Invalid Date' 
    end

在上面的代码中,我有2000年的值,这不是日期。但是,如果我使用

@var
函数检查,它将其标记为有效日期。
我们该怎么做才能获得预期的输出?

提前三

我找到了有趣的东西,我可以帮助您

ISDATE
sql-server date
1个回答
2
投票

如果表达式是有效的日期,时间或日期时间值,则返回1;否则,0

如果表达式为dateTime2值,则返回0。 如果您运行此

isdate

result

如果您运行此
declare @var varchar(100)
set @var  = '1753'

select cast(@var as datetime)

select 
    case when ISDATE(@var) = 1 
           then 'Valid Date' 
         when ISDATE(@var) = 0 
           then 'Invalid Date' 
    end

eRROR:将VARCHAR数据类型转换为DateTime数据类型的结果 在超出范围的值中。 enter image description herebausdateTime

日期范围

declare @var varchar(100) set @var = '1752' select cast(@var as datetime)

在您运行的查询时,实际上是有效的iSdate的查询时,假设它是dateTime。

您可以在您的案例声明中添加额外的后卫条款,要求@VAR超过7个字符('2000-1-1')

January 1, 1753, through December 31, 9999

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.