【发布时间】:2020-04-02 20:06:07
【问题描述】:
我得到了这个旧系统,我必须在我工作的地方进行维护,他们要求我在系统上添加一个日期过滤器,但是日期字段不仅仅是一个字段,之前的开发人员已经将它拆分为 三个,就像“year_id”、“month_id”、“day_id”
现在我必须在两个日期之间进行 SELECT(更具体地说,是在 month 和 year 之间),然后我就这样尝试了:
select
* from `table`
where
(
(`year_id` >= 2018 and `month_id` >= 10)
or
(`year_id` <= 2019 and `month_id` <= 3)
)
当我看到结果时,我意识到查询还返回了 2018 年 1 月、2 月和 3 月的结果,它不应该这样做。 如何应用这些过滤器?
【问题讨论】:
-
您尝试过这种格式吗? : "SELECT * FROM TABLE where startdate = '$enddate'"
-
即使有解决此问题的方法,我还是建议您在表中添加一个新列,其中包含一个包含 3 列内爆值的日期字段。这将帮助您轻松过滤
-
更具体一些 - 如果您不希望 2019 年之前的年份用于第二个子句,请不要使用
<=。 -
如果你仔细观察,这个标准表明任何
year < 2019和month 1,2,3都是候选对象,所以每年都小于2019。(year_id` month_id (year_id` >= 2018 和month_id>= 10)`,则此标准也适用于 EVERY year > 2018` -
为什么不简单地修复你的模型?
标签: php mysql sql laravel select