通过以下查询,我想选择所有超过允许的持续时间(保存为秒)且不再事件的广告:
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/