Sql server 在今天之前删除列的案例语句';日期

Sql server 在今天之前删除列的案例语句';日期,sql-server,Sql Server,我试图使用case语句来更改日期早于今天的任何行,并将这些行作为'值返回,然后将日期格式化为dd/MM/yyyy hh:MM 我试过使用这个: CASE WHEN AppointmentDate1 > getdate() THEN ' ' WHEN AppointmentDate1 IS NULL THEN ' ' ELSE AppointmentDate1 END AS [Appointment] 但当我运行查询时,会收到以下错误消息: 味精241,第16级,状

我试图使用
case
语句来更改日期早于今天的任何行,并将这些行作为
'
值返回,然后将日期格式化为
dd/MM/yyyy hh:MM

我试过使用这个:

CASE
    WHEN AppointmentDate1 > getdate() THEN ' '
    WHEN AppointmentDate1 IS NULL THEN ' '
    ELSE AppointmentDate1
END AS [Appointment]
但当我运行查询时,会收到以下错误消息:

味精241,第16级,状态1,第1行
从字符串转换日期和/或时间时,转换失败


我该怎么做?那么,我如何更改为所需的格式?(
AppointmentDate1
当前为SQL格式,例如
'2019-05-22 10:00:00'

A
case
表达式返回单个值。它计算所有return子句并根据优先级选择一个。日期的优先级高于字符串,因此您的失败是因为
'
(空格)无法转换为日期

如果希望结果为日期,请使用
NULL
。在这种情况下,您可以执行以下操作:

(CASE WHEN AppointmentDate1 < getdate() THEN AppointmentDate1
 END) AS Appointment
(当AppointmentDate1
如果需要字符串,请转换为字符串:

(CASE WHEN AppointmentDate1 < getdate()
      THEN CONVERT(VARCHAR(10), AppointmentDate1, 121) 
      ELSE ''  -- I would just use an empty string 
 END) AS [Appointment]
(任命日期1
我选择了风格121。你可能会有另一种你喜欢的风格。或者使用
FORMAT()