我有一列,数据类型是字符串,显示记录如' 30MAY2014:00:00:00',有些行是空白的。现在我需要将字符串更改为日期,例如' 20140530',但空白行仍然将其保留为空白。我使用的是sql server 2012.这是我的查询:
select
CONVERT(VARCHAR,substring(ColumnName,6,4))
+RIGHT('0'+ (CONVERT(VARCHAR,(CASE substring(ColumnName,3,3)
WHEN 'JAN' THEN 01
WHEN 'FEB' THEN 02
WHEN 'MAR' THEN 03
WHEN 'APR' THEN 04
WHEN 'MAY' THEN 05
WHEN 'JUN' THEN 06
WHEN 'JUL' THEN 07
WHEN 'AUG' THEN 08
WHEN 'SEP' THEN 09
WHEN 'OCT' THEN 10
WHEN 'NOV' THEN 11
ELSE 12
END))),2)
+ CONVERT(VARCHAR,substring(ColumnName],1,2))
FROM table
如果列中有记录,则表示正确,但空行显示12。 如何修改我的查询? 我还有一列,这个月的文件显示所有行都是空白的,我必须完成同样的工作。将空白字符串更改为空白日期,我尝试相同的查询,SQL服务器显示错误:从字符串转换日期和/或时间时转换失败。 任何建议都很感激。
答案 0 :(得分:0)
试试这个:
SELECT CASE WHEN NULLIF(ColumnName, '') IS NULL THEN NULL ELSE
CONVERT(VARCHAR,substring(ColumnName,6,4))
+RIGHT('0'+ (CONVERT(VARCHAR,(CASE substring(ColumnName,3,3)
WHEN 'JAN' THEN 01
WHEN 'FEB' THEN 02
WHEN 'MAR' THEN 03
WHEN 'APR' THEN 04
WHEN 'MAY' THEN 05
WHEN 'JUN' THEN 06
WHEN 'JUL' THEN 07
WHEN 'AUG' THEN 08
WHEN 'SEP' THEN 09
WHEN 'OCT' THEN 10
WHEN 'NOV' THEN 11
ELSE 12
END))),2)
+ CONVERT(VARCHAR,substring(ColumnName],1,2)) END
FROM table
答案 1 :(得分:0)
save