Sql server SQL CASE语句(将CASE语句保留在WHERE子句中)

Sql server SQL CASE语句(将CASE语句保留在WHERE子句中),sql-server,tsql,case,where-clause,sql,Sql Server,Tsql,Case,Where Clause,Sql,我有一个表名为: Ext_Meeting_Status 这有两个字段 分机会议状态ID 正文 这些数值是: EXT_Meeting_Status_ID Text 1 Draft 2 Published 3 Cancelled 4 Closed 如果日期是今天,如何返回“已发布”的“文本”字段,否则返回“关闭” 我尝试使用: select * from Ext_Meeting_Status where GETDATE() = CASE WHEN ( GETDATE

我有一个表名为:

Ext_Meeting_Status
这有两个字段

  • 分机会议状态ID
  • 正文
  • 这些数值是:

    EXT_Meeting_Status_ID   Text
    1   Draft
    2   Published
    3   Cancelled
    4   Closed
    
    如果日期是今天,如何返回“已发布”的“文本”字段,否则返回“关闭”

    我尝试使用:

    select * from Ext_Meeting_Status
    where 
    GETDATE() = CASE
        WHEN ( GETDATE() = '2010-12-13 10:02:31.560'  )
        THEN ( Ext_Meeting_Status_ID=2)
        ELSE ( Ext_Meeting_Status_ID=4)
        END
    

    我认为这是不可能的。您可能希望尝试将其全部放入子选择中,并在其中使用案例

    select * from Ext_Meeting_Status 
       where   Ext_Meeting_Status_ID = 
        CASE WHEN (GETDATE() = '2010-12-13 10:02:31.560')  
        THEN (2)     
        ELSE (4)
     END 
    
    我相信这应该行得通

    还有一个注意事项:将当前日期与精确的毫秒级进行比较可能不起作用,因为此时可能无法执行查询

    你可以试试这样的

    Select getdate(), * from #Temp
      Where ID = Case when getdate() between '2010-12-13 05:21:08.240' and '2010-12-13 05:22:08.240'
                    Then 1
                    Else 2
                 End
    

    谢谢你,伙计,听起来很棒