0

来自 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 日)。

我玩过代码并在网上搜索过,但我无法得到想要的结果。

任何人都可以提出解决方案吗?

谢谢!

4

1 回答 1

3

您的第二个表达式的计算结果如下:

  1. A dateordatetime值被转换为字符串(使用CAST()

  2. ISNULL()如果不为 NULL,则应用它返回相同的结果(相同的字符串)。

  3. 该字符串被转换为...一个字符串(使用CONVERT()这个时间)。

因此,如您所见,由于最内部的转换,您会得到格式错误的日期。

ISNULL我认为你只需要以不同的方式申请。大概是这样的:

ISNULL(CONVERT (VARCHAR(10), s.ENTER_DATE, 101), '') "Enrollment Start Date"
于 2012-06-22T23:36:00.233 回答