如何编写查询以将nvarchar转换为日期

时间:2020-05-30 06:03:09

标签: sql sql-server

我有一个表,其中的单列包含日期和字符串值。如何编写查询以将字符串转换为日期值?

usercomment

comment
----------
02/22/2020
03/22/2020
Nochange
04/22/2020
userreviw

所需的输出:

comment
-----------
2020-02-22
2020-03-22
Nochange
2020-04-22
userreviw

2 个答案:

答案 0 :(得分:4)

尝试使用TRY_CONVERT

SELECT
    COALESCE(TRY_CONVERT(varchar(10),
                         TRY_CONVERT(datetime, col, 101),
                         120), col) AS col_as_date
FROM yourTable;

在第一次调用TRY_CONVERT时,格式掩码101对应于日期格式mm/dd/yyyy,当日期有效时,该格式与您的数据匹配。对于无效值,例如commentTRY_CONVERT将返回NULL。然后,我们用遮罩120调用TRY_CONVERT,以生成格式为yyyy-mm-dd的文本日期。

答案 1 :(得分:1)

Select CASE 
         ISDATE(myColumn) WHEN 1 THEN CONVERT(nvarchar(10), CONVERT(datetime, myColumn, 101), 120)
         ELSE myColumn 
       end
From myTable