gpt4 book ai didi

mysql - 在两个时间戳之间进行选择不会返回任何数据

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

我有两个相隔 65 秒的 unix 时间戳,我正在尝试以这种方式查询 mysql

相隔 65 秒1504684252 + 65

SELECT ask FROM live_rates WHERE the_time BETWEEN UNIX_TIMESTAMP(1504684252) AND UNIX_TIMESTAMP(1504684317)

SELECT ask FROM live_rates WHERE the_time BETWEEN FROM_UNIXTIME(1504684252) AND FROM_UNIXTIME(1504684317)

在我的表中,有一个事件从时间戳 1504684252 开始,并在 65 秒后结束。为什么两个查询都没有返回数据?

最佳答案

您的问题并没有真正弄清楚 the_time 是什么数据类型 - 如果它已经是 unix 时间戳(即整数),只需将其作为整数查询,因为您似乎知道日期范围的 unix 时间戳:

SELECT ask FROM live_rates WHERE  the_time BETWEEN 1504684252 AND 1504684317

如果您在 the_time 中的数据存储为日期时间,我想说您应该确保服务器确实将您提供的值转换为包含相关记录的日期时间范围:

SELECT ask FROM live_rates WHERE id = abcdef

SELECT FROM_UNIXTIME(1504684252), FROM_UNIXTIME(1504684317)

运行这两个查询(替换了 id)并观察数据。我确信你会找到原因 - 可能是时区问题,你的 unix 时间戳会转换为 UTC 中的某个时间,而你的表数据显示的是其他时间,因此你错误地转换了显示的时间进入 unix 时间..或者可能是结束日期的某些时间部分超出了您指定的 unix 时间范围,即使它的日期部分是正确的。

如果没有完整的、可验证的示例(带有插入测试数据的创建表语句和演示问题的 select 语句),很难确定。尝试 sqlfiddle.com)

附:不要按照您在此处编写的方式使用 UNIX_TIMESTAMP() ;它并不打算将 unix 时间戳传递给它。您要么不向其传递任何参数(在这种情况下,它会为您提供服务器时钟的当前日期时间,作为 unix 时间戳),要么向其传递一些日期时间(它将返回该日期时间的等效 unix 时间戳)

关于mysql - 在两个时间戳之间进行选择不会返回任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46070004/

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