php - mysql 日期间隔、php 日期间隔

标签 php mysql sql dateinterval

我有学生表,他们必须每月付款,我有 start_dayend_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

为什么我不喜欢糟糕的方式(尽管它看起来很简单):

  1. 避免在 joinswhere 子句中使用函数。这将阻止使用索引(如果有),并且会给您带来性能方面的噩梦。
  2. 仅对预期数据类型使用正确的运算符。 - 是算术运算符。将 +/- 与日期一起使用通常不是一个好习惯。使用旨在操作日期的函数。 (子日期、date_add、date_sub 等)

关于php - mysql 日期间隔、php 日期间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48260155/

相关文章:

php - 使用 Yii2 扩展通过 swiftmailer 发送电子邮件

php - 我需要在准备好的语句中使用 htmlentities() 或 htmlspecialchars() 吗?

mysql - 当我在 where 中使用 date_add 时不起作用,为什么?

MySQL - 当表 1 有新记录时,如何使用 MySQL 工作台在表 2 下创建子记录?

sql - 具有按计数和排名分组的 TSQL

php - php 程序的 jsp 版本

php - Date.UTC() 与 strtotime() ??为什么不同?

sql - 更新和插入 SQL

php - 我如何在多个表中进行搜索?

php - 如何在php中计算两个时间之间的差异并显示出来