首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql选择a和b之间的时间戳,返回全部时间戳或0时间戳

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

Stack Overflow用户
提问于 2012-06-05 04:53:02
回答 2查看 8.3K关注 0票数 4

我试过了

代码语言:javascript
复制
select * from table where timestamp_field between 1330560000 and 1336170420

还有这个

代码语言:javascript
复制
select * from table where timestamp_field >=1330560000 and timestamp_field<=1336170420

两者都返回空的结果集。

但这是

代码语言:javascript
复制
select * from table where timestamp_field >= 1330560000

返回所有行

让事情变得更加荒谬

代码语言:javascript
复制
select * from table where timestamp_field <= 1336170420

返回空结果集。

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

时间戳值是可以的,至少phpmyadmin显示了正确的(人类可读的)日期-时间值。我通过解析字符串创建了时间戳,

代码语言:javascript
复制
UPDATE table SET timestamp_field = STR_TO_DATE(timestamp_string, '%d.%m.%Y')

我想我错过了什么,但找不到什么!?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-05 05:16:36

MySQL需要date literals,而不是整数:

代码语言:javascript
复制
SELECT *
FROM   table
WHERE  DATE(timestamp_field) BETWEEN '2012-03-01' AND '2012-05-04'

要使用整数(假设它们是从UNIX纪元开始的秒数),首先使用MySQL的FROM_UNIXTIME()函数转换它们:

代码语言:javascript
复制
SELECT *
FROM   table
WHERE  timestamp_field BETWEEN FROM_UNIXTIME(1330560000)
                           AND FROM_UNIXTIME(1336170420)

或者使用UNIX_TIMESTAMP()将您的列转换为其UNIX表示:

代码语言:javascript
复制
SELECT *
FROM   table
WHERE  UNIX_TIMESTAMP(timestamp_field) BETWEEN 1330560000 AND 1336170420
票数 6
EN

Stack Overflow用户

发布于 2012-06-05 04:59:35

为什么不在使用sql代码时将时间戳from_unixtime(timestamp/1000)转换为dateTime?你试过吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10888194

复制
相关文章

相似问题

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