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 - 检查用户是否收藏了某个项目

php - MySQL 用 Group By 计算项目数

php - 如何在移动设备的 php 中隐藏 div 内容?

php - 在 CodeIgniter 中显示数据库表

mysql - 将 CSV 导入到 MySQL 中的临时表

PHP mysqli_query 在 foreach 循环中不起作用

php - Mysql PDO PHP 更改数据库名称不会引发错误,但会终止我的页面

sql - 在 INNER JOIN 条件下有一个 'OR' 是个坏主意吗?

java - Apache 弗林克 : NullPointerException in DataSet API Outer Join

php - 使用 PHP_SQLSRV 在 IIS8 上连接到 SQL Server 2012