【问题标题】:mysql date interval, php date intervalmysql日期间隔,php日期间隔
【发布时间】:2018-01-15 09:30:41
【问题描述】:

我有学生桌,他们必须每月付款,我有 start_day 和 end_day。

例如:

start_day = "2018-01-01";

end_day = "2018-03-30";

我想在发薪日前 3 天发送短信。我不知道如何在这个时间间隔内获取这些日期。

【问题讨论】:

  • 付款日期是你的结束日期?
  • @GauravKandpal - 必须每月付款
  • 没有。在 start_day 和 end_day 他们将在课程中。他们必须在 start_day 之后每月付款
  • 尝试“WHERE start_day = DATE(NOW() , INTERVAL 3 DAY)”
  • 使用$diff=date_diff($start_day,$end_day); 查找开始和结束之间的差异日,然后使用条件if $diff == 3 然后发送短信。

标签: php mysql sql dateinterval


【解决方案1】:
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. 避免在joins 和where 子句中使用函数。这会阻止索引(如果有的话)被使用,并且会给你带来性能方面的噩梦。
  2. 仅对预期数据类型使用正确的运算符。 - 是算术运算符。将+/- 与日期一起使用通常不是一个好习惯。使用旨在操纵日期的函数。 (subdate, date_add, date_sub 等)

【讨论】:

    猜你喜欢
    • 2014-12-17
    • 1970-01-01
    • 2021-04-04
    • 2012-04-25
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    相关资源
    最近更新 更多