我在尝试将列的日期转换为标准MMDDYYYY格式时遇到问题。
例如,我有一个包含如下数据的表:
ID | Date | Type |
----------------------------
1 | 20140308 | License |
2 | 20140308 | License |
3 | 48 | License |
我想收到的结果是:
ID | Date | Type |
-------------------------------
1 | 3-8-2014 | License |
2 | 3-8-2014 | License |
3 | 48(not sure)| License |
当垃圾数据进入系统时,这是否可行?当我尝试将日期转换为MMDDYYYY时,我一直收到这样的错误。
消息241,级别16,状态1,行1转换时转换失败 字符串的日期和/或时间。警告:空值是 通过聚合或其他SET操作消除。
答案 0 :(得分:2)
这个怎么样....
测试数据
DECLARE @Table TABLE(ID INT,[Date] VARCHAR(8),[Type] VARCHAR(20))
INSERT INTO @Table VALUES
(1,'20140308','License'),
(2,'20140307','License'),
(3,'48' ,'License')
<强>查询强>
SELECT ID
,CASE WHEN ISDATE([Date]) = 1
THEN CONVERT(VARCHAR(10), CAST([DATE] AS DATE), 110)
ELSE NULL END AS [Date]
,[Type]
FROM @Table
结果集
╔════╦════════════╦═════════╗
║ ID ║ Date ║ Type ║
╠════╬════════════╬═════════╣
║ 1 ║ 03-08-2014 ║ License ║
║ 2 ║ 03-07-2014 ║ License ║
║ 3 ║ NULL ║ License ║
╚════╩════════════╩═════════╝