带有偏移量的ISDATE()日期时间字符串

时间:2012-07-09 13:18:54

标签: sql sql-server-2008

我需要检查一个值是否是一个日期,但是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]是否为日期。

1 个答案:

答案 0 :(得分:-2)

SQL Server 2012使这一切变得简单。

select p.propertyid from Property p 
where try_convert(datetyime,p.[enddate])  is not null