动态 sql 查询断时数据
Dynamic sql query for broken hours data
考虑一个名为 "Books" 的 table,每隔一小时就会创建一个 UTC 格式的新条目。我想获取本地时区的最近 24 小时数据(24 个条目)。
我试过了
select * from books where created_at >= DATE_SUB(NOW(),INTERVAL 24 HOUR);
如何在 mysql 中不设置时区的情况下在运行时获取过去 24 小时的记录?此外,创建的数据属于三个不同的 id,我需要属于 id=1.
的数据
(已编辑)试试这个:
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;
试试这个:
SELECT * FROM books WHERE created_at > DATE_SUB(NOW(),INTERVAL 24 HOUR);
我想对 Sagar Joon 的回答发表评论,但我不能,所以我添加了单独的一个:
select * from books
where DATE(created_at) < date(now())
order by DATE(created_at) desc
limit 24;
考虑一个名为 "Books" 的 table,每隔一小时就会创建一个 UTC 格式的新条目。我想获取本地时区的最近 24 小时数据(24 个条目)。
我试过了
select * from books where created_at >= DATE_SUB(NOW(),INTERVAL 24 HOUR);
如何在 mysql 中不设置时区的情况下在运行时获取过去 24 小时的记录?此外,创建的数据属于三个不同的 id,我需要属于 id=1.
的数据(已编辑)试试这个:
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;
试试这个:
SELECT * FROM books WHERE created_at > DATE_SUB(NOW(),INTERVAL 24 HOUR);
我想对 Sagar Joon 的回答发表评论,但我不能,所以我添加了单独的一个:
select * from books
where DATE(created_at) < date(now())
order by DATE(created_at) desc
limit 24;