mysql 选择 a 和 b 之间的时间戳返回全部或 0 个时间戳

标签 mysql timestamp

试过了

select * from table where timestamp_field between 1330560000 and 1336170420

还有这个

select * from table where timestamp_field >=1330560000 and timestamp_field<=1336170420

都返回空结果集。

但是这个

select * from table where timestamp_field >= 1330560000

返回所有行

让事情变得更荒谬

select * from table where timestamp_field <= 1336170420

返回空结果集。

当然,1336170420=4.may 2012.和1330560000=1.march 2012之前、之间和之后都存在时间戳值。

时间戳值没问题,至少 phpmyadmin 显示正确的(人类可读的)日期时间值。 我通过解析字符串创建时间戳,使用

UPDATE table SET timestamp_field = STR_TO_DATE(timestamp_string, '%d.%m.%Y')

我猜我遗漏了什么,但找不到什么!?

最佳答案

MySQL 需要 date literals ,不是整数:

SELECT *
FROM   table
WHERE  DATE(timestamp_field) BETWEEN '2012-03-01' AND '2012-05-04'

要使用整数(假设它们是自 UNIX 纪元以来的秒数),首先使用 MySQL 的 FROM_UNIXTIME() 转换它们功能:

SELECT *
FROM   table
WHERE  timestamp_field BETWEEN FROM_UNIXTIME(1330560000)
                           AND FROM_UNIXTIME(1336170420)

否则使用 UNIX_TIMESTAMP()将您的列转换为其 UNIX 表示形式:

SELECT *
FROM   table
WHERE  UNIX_TIMESTAMP(timestamp_field) BETWEEN 1330560000 AND 1336170420

关于mysql 选择 a 和 b 之间的时间戳返回全部或 0 个时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10888194/

相关文章:

mysql - 这个mysql语句有什么问题

Mysql Insert get ID 然后插入返回的Id

mysql - 组织 MySQL 数据库

java - HH 日期时间格式问题

mysql - 在双向关系表中获取唯一的 friend 关系

mysql - 巨大的 wp_post 表

sql - Hive 时间戳查询

php - 在 PHP 中获取恰好一周前的时间戳?

java - 一旦Entity持久化到timestamptz,Java时区信息会丢失吗?

python - 在 Python 中连接两个 32 位 int 以获得 64 位长