我有epoch UNIX格式的时间戳。我想通过直接给出日期而不是时间戳来运行查询。这怎么可能?
SELECT FROM_UNIXTIME(timestamp)
FROM report_data
WHERE timestamp = '1399376713'
我用它来转换成人类可读的格式。
我的数据库有点像
timestamp event_type标志1399357862 701空
我想在查询中给出一个特定的日期并得到结果。
使用FROM_UNIXTIME
函数是可能的。
这假设您的表包含DATETIME
或TIMESTAMP
中的列,并且您希望在查询中提供32位整数值。
例如:
SELECT ...
FROM mytable t
WHERE t.datetime_col >= FROM_UNIXTIME( ? )
AND t.datetime_col < FROM_UNIXTIME( ? )
作为参数提供给FROM_UNIXTIME
函数的整数值将被解释为unix风格的"自epoch以来的秒数"整数值,并使用客户端连接的当前时区设置转换为DATETIME值。
这种方法将使MySQL能够使用范围扫描操作,使用前导列为datetime_col
的索引。
根本不清楚的是列的数据类型是什么,以及要在查询中提供什么值。如果列的数据类型为DATE
、DATETIME
或TIMESTAMP
(这将是存储日期/时间数据的标准模式),则可以以标准MySQL格式'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'
如果您将"时间戳"存储为整数值,那么您将需要谓词的右侧来返回整数值,例如
WHERE t.integer_col >= UNIX_TIMESTAMP('2015-02-10')
AND t.integer_col < UNIX_TIMESTAMP('2015-02-10' + INTERVAL 24 HOUR)