【问题标题】:SQL Server query - where with IN operator and Getdate()SQL Server 查询 - 使用 IN 运算符和 Getdate()
【发布时间】:2014-05-05 22:09:01
【问题描述】:

我在下面有一个 SQL 查询,其中包含 IN 中的 getdate,如示例所示

由于IN 需要引号中的表达式,所以它不起作用。

它可以与动态查询一起使用,但是除了动态查询之外还有其他方法吗?

例如

PIVOT
(
SUM(Items)
FOR [ReceivedDate]
IN (select  
    CONVERT(char(10), GetDate(),126)
,CONVERT(char(10), GetDate()-1,126) 
      ,CONVERT(char(10), GetDate()-1,126) 
)

这不起作用。

【问题讨论】:

标签: sql sql-server sql-server-2008


【解决方案1】:

这是“IN”语句的示例

从客户中选择 * WHERE City IN ('Paris','London');

试试这样的方法

where itemDate IN (SELECT getdate()-1, getdate-2,..)

【讨论】:

  • 不工作 Naveen,用一个例子编辑了我的问题。
【解决方案2】:

IN 不需要在引号中指定项目。你到底想做什么?

如果您尝试比较日期但没有得到结果,那可能是因为您需要去掉时间部分。

SELECT 
    GetDate()                                         AS RightNow,
    Cast(Floor(Cast(GetDate() AS float)) AS datetime) AS DateOnly

【讨论】:

    【解决方案3】:

    Sql server 的 IN 基本上只是将条件扩展为 OR。

    你有什么作品,我整理了一个 sqlfiddle 来展示它。 http://sqlfiddle.com/#!3/ffcbd/3/0

    UPDATE - 由于 OP 最初不包括这是对 PIVOT 的引用,因此我上面的回答假设它是 IN 逻辑运算符。如果动态 sql 不是一个选项,那么问题的答案似乎是“否”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      相关资源
      最近更新 更多