mysql - SQL如何选择两个日期之间的日期和月份

标签 mysql sql

如何选择两个日期之间的日期和月份:

例如:31/December 介于 26/December/2016 和 02/January/2017 之间

我的查询:

select table2.*
from table1,
     table2
where table2.day between DAYOFMONTH(table1.date_start) and DAYOFMONTH(table1.date_end)
  and table2.month between MONTH(table1.date_start) and MONTH(table1.date_end)

table1(预订):

-id -date_start(日期)-date_end(日期)

1 | 2016-12-26 | 2017-01-02

表 2:(配方)

编号 |姓名 |天(整数) |月(整数)

1 | xxx | 31 | 12

最佳答案

看起来您正在使用 MySQL。与其尝试分别检查月份和日期,不如将 BETWEEN 与您希望捕获其范围的两个点一起使用。

SELECT t1.*
FROM table1 t1
INNER JOIN table2 t2
    ON t1.some_col = t2.some_col
WHERE day_col BETWEEN '2016-12-26' AND '2017-01-02'

请注意,我还在您的查询中添加了一个连接条件,如果没有它,您将进行交叉连接,很可能不是您想要的。

关于mysql - SQL如何选择两个日期之间的日期和月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41548055/

相关文章:

java - 在 jOOQ 中插入...使用枚举进行选择

mysql - 选择分组依据并对具有相同金额的列求和

mysql - Django:检索不同的查询集

php - Laravel 中使用 phpunit 拒绝访问数据库

mysql - SQL-计算多个计数的百分比

java - SQL转义遵循什么规则?

php - 即使数据库大小为 0.000MB,如何获取 MySQL 数据库列表?

php mysql防止基于 session id插入重复

mysql - SQL 从不同的表中获取值

mysql - 如何删除同一天重复的行?