当前位置: 代码迷 >> Sql Server >> SQL SERVER中,像2013-9这样的数据,怎么转成DateTime类型
  详细解决方案

SQL SERVER中,像2013-9这样的数据,怎么转成DateTime类型

热度:32   发布时间:2016-04-24 08:57:56.0
SQL SERVER中,像2013-9这样的数据,如何转成DateTime类型?
这表的数据很乱,同一张表的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
  相关解决方案