我需要检查一个值是否是一个日期,但是ISDATE()
函数由于偏移而面对像2012-07-21 00:00:00+02:00
这样的值时会返回0。我的问题是我不能简单地转换值,事实上ISDATE()
旨在用于查询以检查值是否是转换前的日期(参见下面的示例)。
SELECT p.propertyid
FROM property p
WHERE CASE Isdate(p.[value])
WHEN 1 THEN
CASE
WHEN Cast(p.[value] AS DATETIME) >= Cast('7/1/2012' AS DATETIME)
THEN 1
ELSE 0
END
ELSE 0
END = 1
所以我想知道如何检查示例中的p.[value]
是否为日期。
答案 0 :(得分:-2)
SQL Server 2012使这一切变得简单。
select p.propertyid from Property p
where try_convert(datetyime,p.[enddate]) is not null