在SQL where子句中将IsDate与case语句一起使用

问题描述 投票:4回答:4

我正在尝试清理以下代码中的where子句语句:

SELECT
    CONVERT(datetime, [UTC_Time_Stamp], 127) AS TimeStamp
FROM 
    Table 
WHERE 
    CASE 
       WHEN ISDATE([UTC_Time_Stamp]) = 1 
       THEN CONVERT(datetime, [UTC_Time_Stamp], 127) 
       ELSE CAST('1/1/1900' AS datetime) 
    END > CAST('11/09/2012' AS datetime) 
    AND 
       CASE 
          WHEN ISDATE([UTC_Time_Stamp]) = 1 
          THEN CONVERT(datetime, [UTC_Time_Stamp], 127) 
          ELSE CAST('1/1/3000' AS datetime) 
       END < CAST('11/10/2012' as datetime) 
ORDER BY 
    TimeStamp;

UTC_Time_Stamp存储为字符串,有时为null。我以前在where子句中遇到转换错误。我根据问题here的建议修复了错误,但我觉得必须有一种更简单的方法来获得相同的结果。

sql tsql sql-server-2008-r2
4个回答
4
投票

1
投票

0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.