我有一个包含五个字段的mysql表。字段是alert_id,creation_time,assigned_to,alert_duration,alert_body。在单个查询中,我需要基于
获取alert_bodyassigned_to(其中assigned_to =' 401')。
creation_time和creation_time + alert_duration之间的当前日期
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_alerts
(alert_id
,creation_time
,assigned_to
,alert_duration
,alert_body
)价值观
(' 1000001',' 2015-09-01 23:26:41.000000',' 401',3,'早上好,有一个好的天&#39),
(' 1000002',' 2015-08-15 08:31:37.000000',' 401',2,'历史论文将在星期五&#39);
请帮助我,先谢谢
答案 0 :(得分:1)
在单个查询中,我需要获取alert_body
select alert_body from my_table
基于
- assigned_to(其中assigned_to =' 401')。
醇>
where assigned_to = '401'
- creation_time和creation_time + alert_duration之间的当前日期
醇>
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天