当前位置: 首页 > 知识库问答 >
问题:

在两个时间戳之间选择不返回数据

许毅
2023-03-14

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

在FROM_UNIXTIME(1504684252)和FROM_UNIXTIME(1504684317)之间选择ask FROM live_rates WHEREthe_time

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

共有1个答案

盖诚
2023-03-14

您的问题并没有真正明确_time是什么数据类型--如果它已经是一个unix时间戳(即整数),只要将它作为一个整数查询就行了,因为您似乎知道您的日期范围的unix时间戳:

SELECT ask FROM live_rates WHERE  the_time BETWEEN 1504684252 AND 1504684317

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

SELECT ask FROM live_rates WHERE id = abcdef

SELECT FROM_UNIXTIME(1504684252), FROM_UNIXTIME(1504684317)

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

如果没有完整的、可验证的示例(插入测试数据的create table语句和演示问题的select语句。请尝试sqlfiddle.com)

PS;不要像您在这里所写的那样使用UNIX_TIMESTAMP();它不打算将unix时间戳传递给它。您要么不给它传递参数(在这种情况下,它给您服务器时钟的当前日期时间,作为unix时间戳),要么给它传递一些日期时间(它将返回该日期时间的等效unix时间戳)

 类似资料:
  • 我试图获得一个SQL语句来选择时间戳在两个给定时间戳之间的行。这是我试过的。(这是在Java servlet上,而我是Java时间戳对象。) 这里的from和to是timestamp对象这给了我一个语法错误,当我试图准备语句时,请帮助

  • 问题内容: 我正在使用数据库存储日志,其中“日期”列保存了插入日期。日期的格式为“ MM / DD / YY”。请任何人建议我如何在两个特定日期之间选择数据。例如,我尝试了这个: 但是我想这行不通,因为日期不是数字。谢谢您的帮助!:) 问题答案: 使用关键字:

  • 问题内容: 如何获得几天内两个时间戳之间的差异?我应该为此使用datetime列吗? 我将专栏切换为日期时间。简单的减法似乎并没有在几天内给我带来结果。 我不认为是几秒钟,因为当我将一天中的秒数除以(86,400)时,我不会得到一个明智的答案: 问题答案: 如果您乐于忽略列中的时间部分,则DATEDIFF()会为您提供以天为单位的时差。

  • 问题内容: 我需要计算两个日期之间经过的时间。 这里要注意的是,我需要像YouTube一样用视频评论时间戳来显示它。也就是说,仅以最大的方式显示它。 例如, 如果时间是50秒前,应该说是50秒前。 如果时间超过一分钟,则应说一分钟前/十分钟前,等等。 如果时差是1小时30分钟,则应显示:一个小时前。 如果时间是一个半星期而不是一个星期前应该说的话。 如果时间超过一个月,则应说一个月前/两个月前,等

  • 问题内容: 我必须检查特定时间是否介于两次(打开和关闭时间)之间。 打开和关闭时间在数据库中保存为与工作日ID(而不是日期)相关的“开始”和“结束”。 所以我的问题是,我有两种不同的情况,第一种情况是结束时间大于开始时间,例如end = 19:00:00和start = 09:00:00 但也可以是结束= 06:00:00和开始= 20:00:00 那么检查时间是否介于两次之间的性能方法是什么?

  • 问题内容: 我在一个MySQL数据库表上工作,该表的列包含我对其他主机执行ping操作时的时间戳记(例如2014-09-16 09:08:05)。我的问题是如何在几分钟内计算出针对特定主机的第一次ping和最后一次ping之间的差异?另外,如何为上述差异的开始和结束指定不同的时间戳(而不是第一次和最后一次ping)。这是表格的示例: 我希望我已经对自己的解释足够清楚。 问题答案: 您可以使用本机的