首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >希望运行一个查询,在两个日期之间给出结果。我有unix时代格式的时间戳

问希望运行一个查询,在两个日期之间给出结果。我有unix时代格式的时间戳
EN

Stack Overflow用户
提问于 2015-02-12 05:27:08
回答 1查看 800关注 0票数 1

我有时代UNIX格式的时间戳。我想通过直接指定日期而不是时间戳来运行查询。那件事怎么可能?

代码语言:javascript
复制
SELECT FROM_UNIXTIME(timestamp)
FROM report_data
WHERE timestamp = '1399376713'

我用它来转换成人类可读的格式。

我的数据库就像这样

时间戳event_type标志1399357862 701空

我想在查询中给出一个特定的日期并得到结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-12 05:32:09

可以使用FROM_UNIXTIME函数。

这假设您的表包含DATETIME或TIMESTAMP中的列,并且希望在查询中提供32位整数值。

例如:

代码语言:javascript
复制
SELECT ...
  FROM mytable t
 WHERE t.datetime_col >= FROM_UNIXTIME( ? )
   AND t.datetime_col <  FROM_UNIXTIME( ? )

作为参数提供给FROM_UNIXTIME函数的整数值将被解释为unix风格的“秒自划时代”整数值,并将使用客户端连接的当前时区设置转换为日期时间值。

这种方法将使MySQL能够使用带有datetime_col前导列的索引使用范围扫描操作。

不清楚的是列的数据类型是什么,以及要在查询中提供什么值。如果列是数据类型DATE、DATETIME或TIMESTAMP (这将是存储日期/时间数据的规范模式),则可以以标准MySQL格式'YYYY-MM-DD HH:MM:SS'指定日期文本。

代码语言:javascript
复制
 WHERE t.timestamp_col >= '2015-02-11 07:00' 
   AND t.timestamp_col <  '2015-02-11 23:30:00'

如果将“时间戳”存储为整数值,则需要谓词的右侧返回整数值。

代码语言:javascript
复制
 WHERE t.integer_col  >= UNIX_TIMESTAMP('2015-02-10')
   AND t.integer_col  <  UNIX_TIMESTAMP('2015-02-10' + INTERVAL 24 HOUR)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28469966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档