根据日期持续时间

时间:2015-09-02 10:08:33

标签: php mysql

我有一个包含五个字段的mysql表。字段是alert_id,creation_time,assigned_to,alert_duration,alert_body。在单个查询中,我需要基于

获取alert_body
  1. assigned_to(其中assigned_to =' 401')。

  2. creation_time和creation_time + alert_duration之间的当前日期

  3. alert_duration是天数。所以在我的查询中,我只需要在当前时间间隔(creation_time到creation_time + 3days)之间的当前日期获取数据。

    示例:

    当前日期:2015年2月9日

    creation_time:31/08/2015

    alert_duration:3

    因此,如果我在2015年2月9日或之前执行查询,应该获得带有数据的结果。但是如果我明天执行查询,那么查询将给出空结果。

    这里我也添加了sql格式

    tbl_alerts的表结构

    CREATE TABLE IF NOT NOT EXISTS tbl_alerts(   alert_id varchar(20)NOT NULL,   creation_time时间戳(6)NOT NULL,   assigned_to varchar(30)NOT NULL,   alert_duration int(3)NOT NULL,   alert_body varchar(200)NOT NULL,   主要关键(alert_id) )ENGINE = InnoDB DEFAULT CHARSET = latin1;

    转储表格tbl_alerts

    的数据

    INSERT INTO tbl_alertsalert_idcreation_timeassigned_toalert_durationalert_body)价值观 (' 1000001',' 2015-09-01 23:26:41.000000',' 401',3,'早上好,有一个好的天&#39), (' 1000002',' 2015-08-15 08:31:37.000000',' 401',2,'历史论文将在星期五&#39);

    请帮助我,先谢谢

2 个答案:

答案 0 :(得分:1)

  

在单个查询中,我需要获取alert_body

select alert_body from my_table
  

基于

     
      
  1. assigned_to(其中assigned_to =' 401')。
  2.   
where assigned_to = '401'
  
      
  1. creation_time和creation_time + alert_duration之间的当前日期
  2.   
and current_date between creation_time and creation_time +
          INTERVAL alert_duration DAY

答案 1 :(得分:0)

使用TO_DAYS功能

SELECT * FROM tbl_alerts 
WHERE 
   assigned_to = '401' 
  AND
   TO_DAYS(now()) - TO_DAYS(creation_time) <= alert_duration

不确定比较是使用alert_duration还是使用硬编码的3天