SQL和DateTime—如何选择特定时间段内存在的所有行



我有一个名为time的表,其类型为DATETIME

如何选择不超过5天的所有行?

或者换句话说,我如何获取时间戳不超过5天前的数据?


我的请求:

SELECT * 
FROM `stats` 
WHERE `domain` = 'test.com' AND DATEADD(NOW(), interval -5 day) > 'accept_date'

accept_date为行实名。因此,这段代码得到:

1064 -你有一个错误的SQL语法;查看与MySQL服务器版本对应的手册,了解在第1行使用near ')> 'accept_date' LIMIT 0,30 '的正确语法

这取决于RDBMS,但在MySQL中它将是

where date_add(now(), interval -5 day) > time

where datediff(now(), time) < 5

第一个表示"120小时过去了",第二个表示"5个日历天过去了"。

顺便说一下,

time是一个糟糕的列名。什么时间?

'accept_date'不是列的名称-它是字符字面量。

你想要的

AND DATE_ADD(NOW(), interval -5 day) > accept_date

(注意列名周围缺少单引号')

GETDATE()是特定于数据库的,然而:

select * from TABLE where (GETDATE() - time) <= 5

相关内容

  • 没有找到相关文章

最新更新