//这是我的脚本
SELECT CASE WHEN iPaid_dt>= 1 THEN CONVERT(DATETIME, CONVERT(CHAR(8),iPaid_dt)) ELSE '' END AS [TRANSACTION DATE]
FROM MyTable//我的OutPut是
1900-01-01 00:00:00.000
2012-11-11 00:00:00.000
2012-10-26 00:00:00.000//预期产出:
2012-11-11 00:00:00.000
2012-10-26 00:00:00.000// 1900-01-01输出应该是“只”,正确的脚本是什么?注意:iPaid_dt是INT,默认值为0。
发布于 2013-05-10 08:14:05
您正在混合字段类型,Server正在为您将''转换为DATETIME。试试这个:
SELECT CASE
WHEN iPaid_dt > 0
THEN CONVERT(NVARCHAR(23),
CONVERT(DATETIME, CONVERT(CHAR(8),iPaid_dt)))
ELSE ''
END AS [TRANSACTION DATE]
FROM MyTable发布于 2013-05-10 08:13:52
CASE表达式必须具有所有行的所有可能值都必须属于的单一数据类型。由于DATETIME具有比VARCHAR更高的优先级,所有可能的值都被强制为DATETIMEs,因此''被转换回DATETIME。
我不能说如何修复它,因为我不知道您为什么要首先进行这种转换。也许NULL会是一个比''更好的占位符
https://stackoverflow.com/questions/16477720
复制相似问题