【问题标题】:Filtering Records in SQL Server using date使用日期过滤 SQL Server 中的记录
【发布时间】:2011-12-01 16:08:35
【问题描述】:

我需要选择所有不超过 18 个月的记录。我为 SQL Server 编写了这个查询。但它似乎不起作用。

SELECT DISTINCT Company, 
        Name,
        PhoneNumber,
FROM        Request
WHERE       Company  LIKE @Company
AND     RequestDate >= ADD_MONTHS(SYSDATE, -18)

【问题讨论】:

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


【解决方案1】:
SELECT DISTINCT Company,  
        Name, 
        PhoneNumber, 
FROM        Request 
WHERE       Company  LIKE @Company 
AND     datediff(mm, RequestDate, getdate()) <= 18

为此使用DATEDIFF function。上面的查询应该会得到你想要的结果。

【讨论】:

  • -1。通过计算字段值来强制进行表扫描。不好的做法。与预先计算的开始日期比较总是更好。这很糟糕 - 这是对 SQL 的滥用。
  • @TomTom 很好,谢谢你的提示。我会改变我的答案以反映,但 msmucher0527 有这个答案,看起来 OP 会接受他的答案。不过,你是对的,谢谢你的提醒。
【解决方案2】:
SELECT DISTINCT Company, Name, PhoneNumber, 
FROM Request WHERE Company LIKE @Company 
AND RequestDate >= DATEADD(MONTH, -18, GETDATE())

【讨论】:

  • 感谢@msmucker0527 的快速回复。它工作正常。很遗憾我不能再选择 10 分钟作为答案。
猜你喜欢
  • 2021-06-29
  • 2013-06-23
  • 1970-01-01
  • 2023-03-20
  • 2015-11-05
  • 2020-08-17
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多