想要 运行 一个查询,它给我两个日期之间的结果。我有 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 包含 DATETIME
或 TIMESTAMP
中的列,并且您希望在查询中提供 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
的索引来使用范围扫描操作。
完全不清楚的是您的列的 数据类型 是什么,以及您想在查询中提供什么值。如果列的数据类型为 DATE
、DATETIME
或 TIMESTAMP
(这将是存储 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)
我有纪元 UNIX 格式的时间戳。我想通过直接提供日期而不是时间戳来 运行 查询。这怎么可能?
SELECT FROM_UNIXTIME(timestamp)
FROM report_data
WHERE timestamp = '1399376713'
我用它来转换为人类可读的格式。
我的数据库是这样的
时间戳event_type 标志 1399357862 701 空
我想在查询中提供特定日期并获取结果。
可以使用 FROM_UNIXTIME
函数。
这假定您的 table 包含 DATETIME
或 TIMESTAMP
中的列,并且您希望在查询中提供 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
的索引来使用范围扫描操作。
完全不清楚的是您的列的 数据类型 是什么,以及您想在查询中提供什么值。如果列的数据类型为 DATE
、DATETIME
或 TIMESTAMP
(这将是存储 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)