Sql 将INT数据类型转换为DateTime格式
//这是我的脚本Sql 将INT数据类型转换为DateTime格式,sql,Sql,//这是我的脚本 SELECT CASE WHEN iPaid_dt>= 1 THEN CONVERT(DATETIME, CONVERT(CHAR(8),iPaid_dt)) ELSE '' END AS [TRANSACTION DATE] FROM MyTable 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
SELECT CASE WHEN iPaid_dt>= 1 THEN CONVERT(DATETIME, CONVERT(CHAR(8),iPaid_dt)) ELSE '' END AS [TRANSACTION DATE]
FROM MyTable
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
//我的输出是
SELECT CASE WHEN iPaid_dt>= 1 THEN CONVERT(DATETIME, CONVERT(CHAR(8),iPaid_dt)) ELSE '' END AS [TRANSACTION DATE]
FROM MyTable
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
//预期输出:
SELECT CASE WHEN iPaid_dt>= 1 THEN CONVERT(DATETIME, CONVERT(CHAR(8),iPaid_dt)) ELSE '' END AS [TRANSACTION DATE]
FROM MyTable
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\u dt
是INT
,默认值为0。一个CASE
表达式必须有一个单一的数据类型,所有行的所有可能值都必须属于该类型。由于DATETIME
的优先级高于VARCHAR
,因此所有可能的值都被强制为DATETIME
s。因此,”
被转换回日期时间
我不能说如何修复它,因为我不知道你为什么要首先进行这种转换。可能NULL
比'
?一个CASE
表达式必须有一个所有行的所有可能值都必须属于的单一数据类型。由于DATETIME
的优先级高于VARCHAR
,因此所有可能的值都被强制为DATETIME
s。因此,”
被转换回日期时间
我不能说如何修复它,因为我不知道你为什么要首先进行这种转换。可能NULL
比'
更好的占位符?您正在混合字段类型,SQL Server正在为您将'
转换为日期时间。试试这个:
SELECT CASE
WHEN iPaid_dt > 0
THEN CONVERT(NVARCHAR(23),
CONVERT(DATETIME, CONVERT(CHAR(8),iPaid_dt)))
ELSE ''
END AS [TRANSACTION DATE]
FROM MyTable
您正在混合字段类型,SQL Server正在为您将'
转换为日期时间。试试这个:
SELECT CASE
WHEN iPaid_dt > 0
THEN CONVERT(NVARCHAR(23),
CONVERT(DATETIME, CONVERT(CHAR(8),iPaid_dt)))
ELSE ''
END AS [TRANSACTION DATE]
FROM MyTable
使用ISNULL函数并将值更改为期望值:ISNULL(x,,)将ELSE NULL改为ELSE“”,该日期的iPaid\u nt
值是多少?使用ISNULL函数并将值更改为期望值:ISNULL(x,,)