SQL Server 字符串转时间 数据验证

最近要从一个数据库将数据转移到另外一个数据库,期间涉及到一些字符串转时间类型出现了很多问题,将自己的一点愚见贴上来备忘。

CASE 
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.][1-9][-.][1-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]0[1-9]-0[1-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]0[1-9]-[1-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.][1-9]-0[1-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.][13456789][-.][12][0-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]0[13456789][-.][12][0-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.][13578][-.]3[01]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]0[13578][-.]3[01]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.][469][-.]30' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]0[469][-.]30' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]2[-.]1[0-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]02[-.]1[0-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]2[-.]2[0-8]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]02[-.]2[0-8]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]1[012][-.][1-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]1[012][-.]0[1-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]1[012][-.][12][0-9]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]1[02][-.]3[01]' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
WHEN cnct_char31 LIKE '[12][0-9][0-9][0-9][-.]11[-.]30' THEN CAST(CONVERT(datetime,cnct_char31,120) AS VARCHAR)
ELSE NULL END

若有疑问或不正之处,欢迎提出指正和讨论。

posted @ 2010-09-28 09:13  iceknp  阅读(2661)  评论(0编辑  收藏  举报