我想构建一个每天下午1点更新的查询,该查询显示从下午3点到11点的静态数据。
如果现在是2018-06-16 12pm ,则显示 2018-06-15 3pm - 2018-06-16 11am
的数据如果现在是2018-06-16下午1点,则显示 2018-06-16 3pm - 2018-06-17 11am
的数据这是我试过的查询。
更新:
SELECT * FROM config WHERE gt BETWEEN CONCAT(curdate(),' 15:00:00') AND CONCAT(curdate()+ INTERVAL 1 DAY,' 10:59:59')
的问题:
今天是2018-06-15,curdate() - > 2018-06-15,显示今天没有问题的数据。
今天是2018-06-16,curdate() - > 2018-06-16,显示第二天太早的数据,我想要的是每天下午1点更新。
答案 0 :(得分:0)
您可以使用此示例构建查询:
SELECT *
FROM table_name
WHERE `date` >= NOW() - INTERVAL 10 DAY;
Here有关如何使用INTERVAL
的一些信息。
here是如何在特定时间执行查询的一些有用信息。
编辑:
如果now()= 2018-06-16下午1点,则显示2018-06-16 3pm - 2018-06-17的数据 上午11时
然后你可以使用这个例子:
SELECT *
FROM config
WHERE DATE(gt) BETWEEN DATE(NOW() + INTERVAL 2 DAY_HOUR) AND -- 2018-06-16 3pm
DATE(NOW() + INTERVAL 22 DAY_HOUR); -- 2018-06-17 11am
DEMO here
注意:第一个DATE
应该早于DATE
语句中的第二个BETWEEN
。否则它就不会起作用。
答案 1 :(得分:0)
您可以通过多种方式应用select命令。在这里我只提到了两种方法。这对你很有用。
SELECT * FROM config
WHERE gt BETWEEN #07/04/1996# AND #07/09/1996#;
select * from config where gt and created_at > (now()- interval 10 day)
答案 2 :(得分:0)
两种情况:
查询:
select *
from config
where
(
hour(current_time) between 0 and 12
and gt >= current_date - interval 9 hours -- yesterday 15:00
and gt < current_date + interval 11 hours -- today 11:00
)
or
(
hour(current_time) between 13 and 23
and gt >= current_date + interval 15 hours -- today 15:00
and gt < current_date + interval 35 hours -- tomorrow 11:00
);