想要 运行 一个查询,它给我两个日期之间的结果。我有 unix 纪元格式的时间戳

Want to run a query which gives me results between two dates. I have timestamp in unix epoch format

我有纪元 UNIX 格式的时间戳。我想通过直接提供日期而不是时间戳来 运行 查询。这怎么可能?

SELECT FROM_UNIXTIME(timestamp)
FROM report_data
WHERE timestamp = '1399376713'

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

我的数据库是这样的

时间戳event_type 标志 1399357862 701 空

我想在查询中提供特定日期并获取结果。

可以使用 FROM_UNIXTIME 函数。

这假定您的 table 包含 DATETIMETIMESTAMP 中的列,并且您希望在查询中提供 32 位整数值。

例如:

SELECT ...
  FROM mytable t
 WHERE t.datetime_col >= FROM_UNIXTIME( ? )
   AND t.datetime_col <  FROM_UNIXTIME( ? )

作为参数提供给 FROM_UNIXTIME 函数的整数值将被解释为 unix 样式 "seconds since epoch" 整数值,并使用客户端连接的当前时区设置转换为 DATETIME 值.

此方法将使 MySQL 能够使用具有前导列 datetime_col 的索引来使用范围扫描操作。


完全不清楚的是您的列的 数据类型 是什么,以及您想在查询中提供什么值。如果列的数据类型为 DATEDATETIMETIMESTAMP(这将是存储 date/time 数据的规范模式),那么您可以在标准 [=42] 中指定日期文字=]格式,'YYYY-MM-DD HH:MM:SS'.

 WHERE t.timestamp_col >= '2015-02-11 07:00' 
   AND t.timestamp_col <  '2015-02-11 23:30:00'

如果您将 "timestamp" 存储为一个整数值,那么您将需要谓词的右侧 return 一个整数值,例如

 WHERE t.integer_col  >= UNIX_TIMESTAMP('2015-02-10')
   AND t.integer_col  <  UNIX_TIMESTAMP('2015-02-10' + INTERVAL 24 HOUR)