php - SQL 问题 - 在两个日期之间进行选择

标签 php mysql sql laravel select

我得到了这个旧系统,我必须在我工作的地方进行维护,他们让我在系统上添加一个日期过滤器,但是日期字段不仅仅是一个字段,之前的开发人员已经将它拆分成 < em>三个,就像这样 "year_id", "month_id", "day_id"

现在我必须在两个日期之间(更具体地说是在 之间)做一个 SELECT,我就这样尝试了:

select 
    * from `table` 
where 
    ( 
        (`year_id` >= 2018 and `month_id` >= 10) 
    or 
        (`year_id` <= 2019 and `month_id` <= 3) 
    ) 

当我看到结果时,我意识到该查询还返回了 2018 年 1 月、2 月和 3 月 的结果,而它不应该这样做。 我如何应用这些过滤器?

最佳答案

您应该做的最理想的事情是添加一个新列

select 
    *,STR_TO_DATE(Concat(year_id,month_id),'%Y%m') as 'YearMonth' from `table`;

这将创建一个新列 YearMonth 然后您可以使用您的过滤器

select * from (
select 
        *,STR_TO_DATE(Concat(year_id,month_id),'%Y%m') as 'YearMonth' from `table`
) z where (YearMonth between '201810' and '201903')

关于php - SQL 问题 - 在两个日期之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59253639/

相关文章:

mysql - 如何正确排除相互引用的行?

mysql - SQL 查询使用左连接没有显示结果

php - 我如何提交一个在我的 <form> 之外的 &lt;textarea&gt;?

java - MySQL 多重查询

带 "default values"的 SQL GROUP BY

java - 如何设置 JTableBinding 中的列大小?

sql - 使用SQL Server 2005的最佳分页解决方案?

php - 如何从已知和未知作者的帖子表中获取帖子

php - 将变量从 php 传递到 javascript(安全)

php - 我们如何加载放在一个 PHP 文件中的不同目录中的所有类