mysql - 将上个月的日期添加到选择中

标签 mysql

我有一个 SELECT 来给我提供特定月份公寓的预订天数:

SELECT db.the_date, db.id_state, db.id_client_booking, bs.class 
    FROM `day_bookings` as db 
    LEFT JOIN `bookings_states` as bs ON bs.id= db.id_state 
    WHERE id_item= 10
    AND YEAR(the_date)= 2016
    AND MONTH(the_date) = 6

如何将上个月的最后一天添加到此查询中?

我考虑过在第 5 个月使用相同的查询执行新的 LEFT JOIN,但无法使其正常工作,始终出现语法错误。

我尝试使用 UNION ALL 进行 2 个类似的选择,但只得到了最后一个。 我还尝试了嵌套 SELECT,但它没有忽略语法错误。

关于如何将上个月添加到此结果中,有什么建议吗?

最佳答案

试试这个:

SELECT db.the_date, db.id_state, db.id_client_booking, bs.class 
    FROM `day_bookings` as db 
    LEFT JOIN `bookings_states` as bs ON bs.id= db.id_state 
    WHERE id_item= 10
    AND YEAR(the_date)= 2016
    AND (MONTH(the_date) = 6 OR (MONTH(the_date) = 5 AND DAY(the_date) = 31))
    ;

OR 子句就是您所需要的。

关于mysql - 将上个月的日期添加到选择中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34587526/

相关文章:

php - 使用php插入sql数据库时出错

mysql - 搜索性能和数据完整性的最佳实践(或最佳引擎)

具有两个 bool 条件的 MySQL 查询比单独查询每个条件花费的时间更长

java - Controller.Controller 中的错误字段存储库需要类型为 'Controller.Repository' 的 bean,但无法找到

mysql - MySQL中的日期字段,查找所有不重叠的行并仅返回差异

php - 最好将电话存储在三个字段中还是作为一个字段?

mysql - 选择两个表的用户数

java - 使用passwordField连接到mySQL

mysql - 如何在表中仅插入编辑后的值

php - 对 SQL 列进行分组并计算结果