5

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

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

现在可能是这样的情况,而不是这些列中的日期,我可以有空格NULL或字符-

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

  1. 有效日期正确转换,

  2. 当有空白空间时,日期转换为1900-01-01,

  3. NULL 被保留,

  4. -导致转换错误:

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。

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

4

2 回答 2

17

试试这个

CASE WHEN ISDATE(closedDate) = 1 THEN CONVERT(datetime, closedDate, 112) 
     ELSE NULL END closedDate
于 2012-10-17T14:41:36.563 回答
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
于 2017-05-09T05:20:55.913 回答