SQL查询的片段(使用SQL Server 2008 R2):
, CONVERT (VARCHAR(10), s.ENTER_DATE, 101) "Enrollment Start Date"
, CONVERT (VARCHAR(10), (ISNULL(CAST(s.LEAVE_DATE AS VARCHAR(10)), '')) ,101) "Enrollment Drop Date"
顶行可以正常输出日期为适当的101格式(例如:06/22/2012
)。
底线可以根据需要删除空白的任何NULL值,但 ...对于任何日期值,它不会将该日期输出为正确的101格式,而是输出日期默认格式(例如:2012年6月22日)。
我玩过代码并在网上搜索但我无法获得理想的结果。
有人可以建议解决方案吗?
谢谢!
答案 0 :(得分:3)
你的第二个表达式评估如下:
将date
或datetime
值转换为字符串(使用CAST()
)
ISNULL()
如果不是NULL则返回相同的结果(相同的字符串)。
字符串转换为...字符串(这次使用CONVERT()
)。
因此,正如您所看到的,由于最里面的转换,您会得到格式错误的日期。
我认为你需要以不同的方式应用ISNULL
。可能是这样的:
ISNULL(CONVERT (VARCHAR(10), s.ENTER_DATE, 101), '') "Enrollment Start Date"