0

我有 2 个日期,如下所示。

End_Date = DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 365), '01/01/2000')
Cur_Date = SELECT CONVERT(VARCHAR(10),GETDATE(),111

我想检查是否End_Date小于,Cur_Date以便我可以进行特定更新。

我当前的查询如下

update bed
set Status_Avai_Occ = 
    case when (
                ( select  End_Date 
                  from Patient_Record 
                  where b_ID= @b and
                  End_Date <> '-' 
                  and End_Date is not null
                ) <  (
                       SELECT CONVERT(VARCHAR(10),GETDATE(),111)
                     )
               ) then 'Available'

但我收到以下错误:

消息 241,级别 16,状态 1,第 5 行
从字符串转换日期和/或时间时转换失败。

4

2 回答 2

1

我能看到的唯一会给出该错误的行是

End_Date <> '-'

这似乎暗示 End_Date 是 DATE 或 DATETIME 列。如果是这样,您可以使用以下方法简单地比较日期:

End_Date < GETDATE()
于 2013-03-20T10:21:02.667 回答
0

您可以将 getdate() 舍入到午夜,这样:

         SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
于 2013-03-20T10:46:24.693 回答