mysql - SQL:当值不在同一年份时,time_diff 返回错误值

标签 mysql sql

通过以下查询,我想选择所有超过允许的持续时间(保存为秒)且不再事件的广告:

SELECT * 
FROM adverts 
WHERE TIME_TO_SEC(timediff(now(),adverts.stamp_created))>adverts.duration

我的问题:如果广告创建时间(= stamp_created、TIMESTAMP)是在今年,则此查询可以正常工作,并且 time_to_sec 函数会返回正确的时差(以秒为单位)。

但是,如果创建广告的时间与当前年份不同,例如 2014 年,我会得到错误的时差值,并且查询不起作用。可能是什么原因?我需要如何调整我的查询?

最佳答案

如何通过添加秒来重新表述条件,而不是采用差异?

SELECT * 
FROM adverts a
WHERE DATE_ADD(a.stamp_created, interval a.duration second) > NOW();

关于mysql - SQL:当值不在同一年份时,time_diff 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28176826/

相关文章:

php - MYSQL:根据来自另一个表的 SELECT 更新行

python - 从 perl 转向 python,我想知道 python 是否有类似 DBI 的东西?

mysql - 在 rails 中生成数据的单元测试中按 created_at 排序

mysql - Magento 升级时出错

mysql - 如何使用带有 MySQL 的 Haversine 公式测量距离?

c# - 如何使其成为适用于每台 Windows PC 的程序?

mysql - 从此 MySQL select+join+group 中删除 "Using temporary; Using filesort"

sql - 如何通过查询获取SQL表外键类型

MySQL 按 SUM 分组

MySQL:如何将 SQL 文件转换为 Workbench mwb 文件