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
函数进行检查,则会将其标记为有效日期。
我们可以做些什么来获得预期的产出?
提前致谢
答案 0 :(得分:2)
我发现有趣的事情,我希望这可以帮助你
ISDATE setParameter()
ISDATE persistence.xml
如果你运行这个
Returns 1 if the expression is a valid date, time, or datetime value; otherwise, 0.
RESULT
如果你运行这个
returns 0 if the expression is a datetime2 value.
错误:导致将varchar数据类型转换为日期时间数据类型 在超出范围的价值。
因为DATETIME日期范围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
在您的情况下运行实际为Declare @var varchar(100)
set @var = '1752'
select cast(@var as datetime)
且有效的查询时ISDATE假定它是DATETIME。
答案 1 :(得分:0)
您可以在案例陈述中添加额外的保护条款,要求@var超过7个字符(' 2000-1-1')
std::cout << "[ INFO] [" << ros::Time::now() << "]: main catch" << std::endl;