我有学生表,他们必须每月付款,我有 start_day
和 end_day
。
例如:
start_day = "2018-01-01";
end_day = "2018-03-30";
我想在发薪日前 3 天发送短信。我不知道如何获取这个时间间隔内的那些日期。
最佳答案
select user_id from schema.table where end_day between
subdate(current_date, interval 3 day) and subdate(current_date, interval 2 day);
一个糟糕的方法是:where date(end_day) = current_date-3
为什么我不喜欢糟糕的方式(尽管它看起来很简单):
- 避免在
joins
和where
子句中使用函数。这将阻止使用索引(如果有),并且会给您带来性能方面的噩梦。 - 仅对预期数据类型使用正确的运算符。
-
是算术运算符。将+/-
与日期一起使用通常不是一个好习惯。使用旨在操作日期的函数。 (子日期、date_add、date_sub
等)
关于php - mysql 日期间隔、php 日期间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48260155/