如何在sql server 2012中比较不同格式的2个日期

时间:2013-03-20 09:41:15

标签: sql sql-server sql-server-2012

我有两个日期如下。

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'

但是我收到以下错误:

  

Msg 241,Level 16,State 1,Line 5
  从字符串转换日期和/或时间时转换失败。

2 个答案:

答案 0 :(得分:1)

我能看到哪一行会产生错误

End_Date <> '-'

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

End_Date < GETDATE()

答案 1 :(得分:0)

你可以将getdate()舍入到午夜,所以:

         SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)