我有一个表,其中的单列包含日期和字符串值。如何编写查询以将字符串转换为日期值?
表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
答案 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
,当日期有效时,该格式与您的数据匹配。对于无效值,例如comment
,TRY_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