这表的数据很乱,同一张表的AddTime列,有以下4中不同格式的数据(蛋疼的表)
11 18 2014 5:48PM
2013-9
2014
2008/7/31 0:00:00
用CONVERT(DATETIME,AddDate),其他格式的都可以,就2013-9这样的格式不行
------解决思路----------------------
非规则的数据要用程序预处理,数据库的特长在于规则大数据的快速处理。
------解决思路----------------------
; WITH cte(Col) AS (
SELECT '11 18 2014 5:48PM' UNION ALL
SELECT '2013-9' UNION ALL
SELECT '2014' UNION ALL
SELECT '2008/7/31 0:00:00'
)
SELECT
CASE WHEN LEN(COL) - LEN(REPLACE(col,'-','')) = 1 THEN CONVERT(DATE,Col + '-01')
ELSE CONVERT(DATETIME,Col) END
FROM cte