【问题标题】:Query to check if date is between two month-day values查询以检查日期是否在两个月日值之间
【发布时间】:2013-08-27 04:29:58
【问题描述】:

我想知道某个日期(年-月-日)是否介于一个月中的某天(月-日)之间。

例如,我想知道 'April 2, 2013' 是否介于 'April 2' 和 'April 19' 之间。

我可以很容易地做到这一点的范围有一年的价值。但是,没有一年的时间,我需要如何做到这一点的想法。

我正在努力实现的一些示例:

SELECT 1 WHERE '2013-04-02' BETWEEN '04-01' AND '04-19'; -- result is 1
SELECT 1 WHERE '2014-04-02' BETWEEN '04-01' AND '04-19'; -- result is 1
SELECT 1 WHERE '2014-03-02' BETWEEN '04-01' AND '04-19'; -- result is 1

谢谢

【问题讨论】:

标签: mysql sql date


【解决方案1】:

您可以使用DATE_FORMAT()

示例

SELECT 
*
FROM
 table
WHERE
  DATE_FORMAT(date,'%m-%d') BETWEEN '04-01' AND '04-19'

编辑

SELECT 
   *
FROM
   table
WHERE
   STR_TO_DATE(date, '%m-%d') BETWEEN '04-01' AND '04-19'

【讨论】:

  • 谢谢。我已经尝试过了,这很有效。只是一个问题,这是否将值作为日期进行比较?或者这里的比较是如何工作的?作为字符串?
  • 从 12 月到 1 月这行不通(例如 DATE_FORMAT(date,'%m-%d') BETWEEN '12-15' AND '01-15')
【解决方案2】:

以下是使用oracle的工作

select * from table_name where to_char(date_column, 'MM-DD') BETWEEN '08-01' AND '08-14'

【讨论】:

  • 感谢您的回答。我正在寻找的是 MySQL。虽然看起来逻辑是一样的。
【解决方案3】:

接受的答案很好,但如果你想像@tony-brix 所说的那样选择 12 月到 2 月,它就不起作用了。您可以使用两个 DATE_FORMAT 函数扩展该答案。一个从 12 月到年底,另一个从年初到 2 月。

SELECT 
*
FROM
 table
WHERE
  DATE_FORMAT(date,'%m-%d') BETWEEN '12-01' AND '12-31'
OR
   DATE_FORMAT(date,'%m-%d') BETWEEN '01-01' AND '02-01'

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 2012-09-19
  • 1970-01-01
相关资源
最近更新 更多