从UNIX_TIMESTAMP减去一周

Joh*_*ley 4 mysql sql

我有一个问题:

SELECT * FROM msc_calendar WHERE calendar_userId = 1 AND end < UNIX_TIMESTAMP() 
Run Code Online (Sandbox Code Playgroud)

有没有办法从时间戳中减去一周,即查看是否end超过一周前?

cee*_*yoz 18

@ EugenRieck的解决方案将打破边缘情况,例如有夏令时切换的周.最好使用内置函数,DATE_SUB:

SELECT * FROM msc_calendar WHERE calendar_userId = 1 AND 'end' < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 WEEK))
Run Code Online (Sandbox Code Playgroud)

  • 虽然此解决方案将一直中断:end的类型为int(Unix时间戳),DATE_SUB(NOW(),INTERVAL 1 WEEK)的类型为date.所以我们需要UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL 1 WEEK)) (3认同)

Eug*_*eck 6

SELECT * FROM msc_calendar WHERE calendar_userId = 1 AND 'end' < UNIX_TIMESTAMP()-7*24*60*60
Run Code Online (Sandbox Code Playgroud)