【问题标题】:BETWEEN clause in DATEPART functionDATEPART 函数中的 BETWEEN 子句
【发布时间】:2017-04-20 05:16:33
【问题描述】:

我想在这个查询中使用 BETWEEN 子句,但不知道该怎么做

SELECT * FROM record 
WHERE  (DATEPART(yy, register_date) = 2009
AND    DATEPART(mm, register_date) = 10
AND    DATEPART(dd, register_date) = 10)

【问题讨论】:

  • 例如WHERE DATEPART(YEAR, register_date) BETWEEN X AND Y?
  • 我必须在像 register_date BETWEEN '2009-10' 和 '2009-12' 这样的子句之间同时使用年和月,而 like 子句对我不起作用
  • 那么喜欢WHERE DATEPART(YEAR, register_date) = 2009 AND DATEPART(MONTH, register_date) BETWEEN 9 AND 12?或者,您可以完全跳过日期部分,只说 WHERE register_date >= '2009-10-10' AND register_date < '2010-12-11' 或类似的内容。
  • 我不能使用这个,因为我必须使用like子句
  • 使用之间的什么?两个日期?什么?您的示例似乎不需要 between 子句

标签: sql-server


【解决方案1】:

这给出了从 5 小时前到现在的记录

SELECT * FROM record
WHERE register_date BETWEEN DATEADD(HOUR, -5, GETDATE()) AND GETDATE()

看来这可能是你想要的

select * from record
where register_date between '2017-10-1' and '2017-12-31'

请注意,如果您想要最后一天的所有记录,您可能需要添加时间或选择后一天,因为默认时间是 0:00

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2020-06-03
    • 1970-01-01
    • 2017-12-04
    • 2012-06-18
    • 2011-06-16
    • 1970-01-01
    • 2015-07-09
    相关资源
    最近更新 更多