gpt4 book ai didi

使用extract查询Mysql时间范围

转载 作者:行者123 更新时间:2023-11-29 13:39:45 25 4
gpt4 key购买 nike

我正在尝试获取类似于 psql 中的 date_trunc 的 mysql 查询。

不幸的是Mysql没有date_trunc功能,我发现我可以在Mysql中使用extract代替。

我想做的是编写一个脚本,假设每小时过 10 分钟,我将运行该脚本,但我只想选择从一小时开始到这一小时结束的数据。

例如,我将在 12:10 运行脚本,并且希望显示从 11:00:00 到 11:59:59 的数据。

在 PSQL 中查询看起来像这样:

SELECT * 
FROM data
WHERE time > ( date_trunc('hour',now()) - interval '1 hour' )
AND time <= ( date_trunc('hour',now()) ) ORDER BY time;

我尝试以类似的方式使用提取,但没有返回行或错误:/

下面的查询返回一些缩小的数据,但从数据库启动的第一天开始,每天大约有 2 个小时,而不仅仅是最后一小时:

SELECT * 
FROM data
WHERE extract(hour from cr_date) between extract(hour from now()) - interval 1 hour)
AND extract(hour from now())
ORDER BY cr_date;

有什么想法可以实现这一点吗?或者我在这个查询中做错了什么?

最佳答案

Hour 只是一个整数,因此它会查找 之间的任何匹配项,例如 9 和 10,无论日期如何。

我会推荐

select * FROM data 
where cr_date >= date(now()) + INTERVAL hour(now())-1 HOUR
and cr_date <= date(now()) + INTERVAL hour(now()) HOUR

date(now()) 返回午夜,而 hour(now()) 返回自午夜以来的小时数

因此,在上午 11:10,结果应该在午夜 + 10 小时(上午 10 点)和午夜 + 11 小时(上午 11 点)之间产生结果

关于使用extract查询Mysql时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18234137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com