mysql - 选择带有日期的两列之间的记录并忽略日期列中的年份

标签 mysql date datetime datediff

包含事件的 myTable 如下所示:

id     |    from_date    |    to_date    
 1     |   2014-10-01    |   2015-02-20
 2     |   2014-08-25    |   2015-04-01

from_date 和 to_date 是日期列 年份并不重要,因为所有事件每年都会在同一时间举行。例如每年 10-01 到 02-20 之间。

我想选择今天的所有事件,所以 10-22

我尝试使用 DayOfYear 但没有成功。

SELECT * FROM myTable WHERE DayOfYear('2014-10-22') 
BETWEEN DayOfYear(`from_date`) AND DayOfYear(`to_date`)

BETWEEN 与 date_format(from_date,'%m%d') 也不起作用

任何帮助都会很棒!

最佳答案

to_date 位于 from_date 之后的下一年时,您需要反转条件。

SELECT *
FROM myTable
WHERE (YEAR(from_date) = YEAR(to_date) 
        AND DAYOFYEAR('2014-10-22') BETWEEN DAYOFYEAR(from_date) AND DAYOFYEAR(to_date))
    OR 
      (YEAR(from_date) != YEAR(to_date) 
        AND DAYOFYEAR('2014-10-22') NOT BETWEEN DAYOFYEAR(to_date) AND DAYOFYEAR(from_date))

DEMO

关于mysql - 选择带有日期的两列之间的记录并忽略日期列中的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26511579/

相关文章:

php - Mysql 不允许在调用时显示表

asp.net - ASP.NET DateTime选择器

MySQL 插入到 DATETIME:使用 ISO::8601 格式安全吗?

java - 即使该列存在,我也会收到未找到列的异常

php - CodeIgniter 以错误的顺序执行数据库查询(可能是并行的?)

mysql - 为什么我的 mysql.sock 文件只有在重新启动后才出现?

php - 日期格式返回 FALSE

python - 获取时间窗口的楼层

r - 每组两个日期之间的平均时间差

c# - DateTimeOffset 正确使用