sql-server SQL空日期返回1900-01-01

ewm0tg9j  于 2022-10-31  发布在  其他
关注(0)|答案(3)|浏览(793)

以下是我的部分查询:

IsNull(CONVERT(date, V_CONSTAT_ACTUAL_DATES.ID50), '') AS 'actualFinish'

V_CONSTAT_ACTUAL_DATES.ID50是一个空值,并且是一个日期时间列。所以我得到的结果是1900-01-01,我想做的是什么都不返回,只返回' '。我该怎么做呢?

iih3973s

iih3973s1#

你现在拥有的类型的混合绝对是一个问题。
如果要为空日期显示空字符串,则需要将日期转换为短日期时间字符串,而不是日期。可以使用convert函数来完成此操作。最后一个参数接受一个样式代码,因此可以让它只显示日期部分。

COALESCE(CONVERT(varchar(8), V_CONSTAT_ACTUAL_DATES.ID50, 101), '') AS 'actualFinish'

如果该列不为空,则将以mm/dd/yy格式显示日期;如果为空,则显示空字符串。
要查看有关日期到字符串转换的更多信息,请转到https://msdn.microsoft.com/en-us/library/ms187928.aspx

fsi0uk1n

fsi0uk1n2#

请尝试使用CASE语句,而不要使用ISNULLCOALESCE-

SELECT CASE WHEN date IS NULL THEN '' ELSE CONVERT(date, V_CONSTAT_ACTUAL_DATES.ID50) END
umuewwlo

umuewwlo3#

简单ISNULL如果数据为NULL,嵌套CAST函数可以删除1900-1-1值

ISNULL(CAST(CAST(<<DateColumn>> AS DATE) AS Varchar),' ') [<<Date Column Name>>]

相关问题