如何将varchar转换为datetime并在SQL中跳过无效的datetime

时间:2012-10-17 14:38:09

标签: sql-server datetime type-conversion

我在SQL Server中有一个数据库。我没有权限更改任何表,但我可以创建视图。

我有三个varchar列,以YYYYMMDD格式存储日期。我想创建一个视图,其中日期从varchar转换为datetime

现在可能的情况是,我可以使用空格NULL或字符-代替此列中的日期。

我们来看closedDate列。如果我使用CONVERT(datetime, closedDate, 112)

  1. 有效日期转换正确,

  2. 如果有空格,则日期转换为1900-01-01

  3. 保留NULL,

  4. -导致转换错误:

  5.   

    导致将varchar数据类型转换为日期时间数据类型   在超出范围的值。

    我如何告诉函数转换日期,只要它具有有效的日期格式,并在所有其他情况下保留NULL或更好的空日期(或空格)?

2 个答案:

答案 0 :(得分:15)

试试这个

CASE WHEN ISDATE(closedDate) = 1 THEN CONVERT(datetime, closedDate, 112) 
     ELSE NULL END closedDate

答案 1 :(得分:0)

        Use below code    


    SELECT CASE WHEN ISDATE(datecolumn)=1 THEN CONVERT(datetime, datecolumn, 103 ) 
                        ELSE null END
            FROM tablename


 use below for empty data

    SELECT CASE WHEN ISDATE(datecolumn)=1 THEN CONVERT(datetime, datecolumn, 103 ) 
                            ELSE '' END
                FROM tablename