以下是我的部分查询:
IsNull(CONVERT(date, V_CONSTAT_ACTUAL_DATES.ID50), '') AS 'actualFinish'
V_CONSTAT_ACTUAL_DATES.ID50是一个空值,并且是一个日期时间列。所以我得到的结果是1900-01-01,我想做的是什么都不返回,只返回' '。我该怎么做呢?
V_CONSTAT_ACTUAL_DATES.ID50
' '
iih3973s1#
你现在拥有的类型的混合绝对是一个问题。如果要为空日期显示空字符串,则需要将日期转换为短日期时间字符串,而不是日期。可以使用convert函数来完成此操作。最后一个参数接受一个样式代码,因此可以让它只显示日期部分。
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。
fsi0uk1n2#
请尝试使用CASE语句,而不要使用ISNULL或COALESCE-
CASE
ISNULL
COALESCE
SELECT CASE WHEN date IS NULL THEN '' ELSE CONVERT(date, V_CONSTAT_ACTUAL_DATES.ID50) END
umuewwlo3#
简单ISNULL如果数据为NULL,嵌套CAST函数可以删除1900-1-1值
ISNULL(CAST(CAST(<<DateColumn>> AS DATE) AS Varchar),' ') [<<Date Column Name>>]
3条答案
按热度按时间iih3973s1#
你现在拥有的类型的混合绝对是一个问题。
如果要为空日期显示空字符串,则需要将日期转换为短日期时间字符串,而不是日期。可以使用
convert
函数来完成此操作。最后一个参数接受一个样式代码,因此可以让它只显示日期部分。如果该列不为空,则将以mm/dd/yy格式显示日期;如果为空,则显示空字符串。
要查看有关日期到字符串转换的更多信息,请转到https://msdn.microsoft.com/en-us/library/ms187928.aspx。
fsi0uk1n2#
请尝试使用
CASE
语句,而不要使用ISNULL
或COALESCE
-umuewwlo3#
简单ISNULL如果数据为NULL,嵌套CAST函数可以删除1900-1-1值