加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql date_sub使用字段作为间隔

发布时间:2020-12-11 23:48:24 所属栏目:MySql教程 来源:网络整理
导读:我需要mysql和date_sub()的帮助.我有一个表调用Activity Activity(id,deadline,alert)Activity(1,'2011-04-18','1 DAY');Activity(2,'2011-04-13','1 MONTH'); A中的每一行都有一个“警报”,该字段表示活动必须报告的截止日期之前的时间. 例如 On 2011-04-17

我需要mysql和date_sub()的帮助.我有一个表调用Activity

Activity(id,deadline,alert)
Activity(1,'2011-04-18','1 DAY');
Activity(2,'2011-04-13','1 MONTH');

A中的每一行都有一个“警报”,该字段表示活动必须报告的截止日期之前的时间.

例如

On 2011-04-17 I have to report the activity with 'id' 1
On 2011-03-14 I have to report the activity with 'id' 2

我试图使用date_sub()函数,但我不能使用字段作为此函数的参数.知道如何解决这个问题吗?

SELECT * 
  FROM `activities` 
 WHERE date_sub(`deadline`,INTERVAL alert) >= CURDATE();
最佳答案 将警报拆分为2个字段

Alert_count: integer
Alert_period: enum('hour','day','month','week')

并像这样更改查询:

SELECT * 
  FROM `activities` 
 WHERE CASE alert_period 
   WHEN 'hour' THEN date_sub(`deadline`,INTERVAL alert_count HOUR) >= CURDATE();
   WHEN 'day' THEN date_sub(`deadline`,INTERVAL alert_count DAY) >= CURDATE();
   ...
 END CASE

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读