使用 UNIX_TIMESTAMP 的 mySQL 查询返回 0 结果

标签 mysql sql

我有以下查询,我假设应该返回结果:

SELECT 
    * 
FROM 
    media
WHERE 
    sent < package
AND 
    flag = 0
AND 
    UNIX_TIMESTAMP(last_run) + 1800 < UNIX_TIMESTAMP(NOW())
ORDER BY 
    last_run ASC 
LIMIT 1

我的数据库中有以下行

`last_run` = '2014-09-13 17:30:0'
`flag` = '0'
`sent` = '4'
`package` = '400'

现在,根据服务器,当前时间为 2014-09-15 02:53:57time()1410749659 I假设这应该被退回?如果不是,这背后的原因是什么?

根据 mySQL 检查时间戳时,我从此查询中得到以下结果

SELECT UNIX_TIMESTAMP(last_run), UNIX_TIMESTAMP(NOW()), last_run FROM media LIMIT 1
----------------------------------------------------------------------------
UNIX_TIMESTAMP(last_run)      UNIX_TIMESTAMP(NOW())      last_run
1410752462                    1410750296                 2014-09-14 20:41:02

最佳答案

问:我认为应该返回此[行]?

答:是的,我们希望返回您所描述的行(假设没有进行隐式数据转换,例如发送的数据类型和package 列是整数。

对于数据类型 DATETIME 的 last_run 列,我们期望此谓词:

UNIX_TIMESTAMP(last_run) + 1800 < UNIX_TIMESTAMP(NOW())

相当于:

last_run < NOW() - INTERVAL 1800 SECOND
<小时/>

最可能的解释是表中没有行满足所有谓词;还应该调查其他谓词。 (删除其他谓词进行测试。)

关于使用 UNIX_TIMESTAMP 的 mySQL 查询返回 0 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25840222/

相关文章:

Java将从数据库返回的日期值拆分为单独的日期和时间字符串

MySQL Join 不返回与新数据库实例中的两个表匹配的数据

java - Spring Boot JPA Mysql AWS 在 RequestMapping 上找不到

c# - MySql 使用.Net/Connector 批处理存储过程调用?

sql - 错误的批量删除和更新——设计错误?

mysql - STR_TO_DATE 和 LOAD DATA INFILE 格式问题

php - 如何从时间戳字段匹配当前月份?

sql - 关系划分-模仿 'ONLY IN'

mysql - 在 MySql 中使用 IN 子句的不同方法

mysql - 如何限制 SELECT 查询中的某些记录