我目前有以下代码:
CASE WHEN CONVERT(DATE, BirthDateTime) IS NULL THEN '' END AS DOB,
CASE WHEN CONVERT(DATE, ServiceDateTime) IS NULL THEN '' END AS [Admission Date],
CASE WHEN CONVERT(DATE, DischargeDateTime) IS NULL THEN '' END AS [Discharge Date],
它返回:
将日期仍然转换为日期的最佳方法是什么(原始字段是日期时间),如果是空,则返回空白或“
提前致谢!
答案 0 :(得分:2)
在SQL Server中:
由于您想使用空字符串而不是null
,因此您将转换为字符串。你可以使用10
的大小和样式120
来返回iso格式(没有时间部分),如下所示:
select
dob = isnull(convert(varchar(10),BirthDateTime,120),'')
, [Admission Date] = isnull(convert(varchar(10),ServiceDateTime,120),'')
, [Discharge Date] = isnull(convert(varchar(10),DischargeDateTime,120),'')
from ...
您可以在此处找到convert()
的其他样式代码:docs: cast and convert
答案 1 :(得分:0)
你可以使用coalesce。无论行如何,列都必须始终具有一种类型,因此在将日期类型传递给合并之前,必须将日期类型转换为文本类型:
COALESCE(CONVERT(VARCHAR(100), BirthDateTime), '') AS DOB,
答案 2 :(得分:0)
对于SQL SERVER
跟着
SELECT ISNULL(DOB,'') AS DOB FROM TABLE