考虑一个名为“Books”的表,每隔一小时就会以UTC格式创建一个新条目。我想在当地时区获取最近24小时的数据(24个条目)。
我试过这个
select * from books where created_at >= DATE_SUB(NOW(),INTERVAL 24 HOUR);
如何在没有在mysql中设置时区的情况下在过去24小时内在运行时获取记录?此外,创建的数据属于三个不同的id,我需要属于id = 1的数据。
答案 0 :(得分:1)
( EDITED )试试这个:
select * from books
where DAYOFMONTH(DATE(created_at))<>DAYOFMONTH(NOW())
order by DATE(created_at) desc
limit 24;
现在,如果要更改时区,对于会话,请使用此查询:
SET GLOBAL TIME_ZONE = 'ASIA/CALCUTTA'
但唯一的缺点是每次重启MySQL时都必须编写它。
要永久更改它,请将以下内容放入mysql服务器配置中(例如my.cnf):
default-time-zone=ASIA/CALCUTTA
剩下的唯一最后一个选项是查询本身的转换:
select convert_tz(created_at,'UTC', 'ASIA/CALCUTTA ') MyTimeZone from books
where DAYOFMONTH(DATE(created_at))<>DAYOFMONTH(NOW())
order by MyTimeZone desc
limit 24;
答案 1 :(得分:0)
试试这个:
SELECT * FROM books WHERE created_at > DATE_SUB(NOW(),INTERVAL 24 HOUR);
答案 2 :(得分:0)
我想对Sagar Joon回答发表评论,但我不能这样做,我正在单独添加:
select * from books
where DATE(created_at) < date(now())
order by DATE(created_at) desc
limit 24;