在SQL中将varchar列转换为日期



我有一个数据表,其中submitted date列定义为varchar

列中的值看起来像这样:" 20121-12-02 00:00:00"。我想把这一列转换成日期,怎么做呢?

我使用下面的查询

选择将(submitted_date as date)转换为[submit_date]从schemaname.tablename

我得到下面的错误

无效的操作:"将文本转换为日期错误"

日期可能有多种原因导致这种情况。

一种可能检查数据是否在您正在寻找的格式的方法是使用SIMILAR TO并将其过滤掉或进一步调试

SELECT DT
, CASE
WHEN DT SIMILAR TO '\d{1,4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}' THEN 1
ELSE NULL
END AS Flag
FROM (SELECT '2000-08-21 00:00:00' AS DT UNION SELECT '2001-08-21 00:00:00' AS DT UNION SELECT '2001-08-AB' AS DT) x

最新更新