Ric*_*nop 4 mysql sql datetime
从表中选择过去7天内创建的那些行的最佳方法是什么?
MySQL中有许多时间和日期函数,我对最简单的方法有点困惑.
为了这个问题,假设你有一个名为"my_table"的表,它包含一行"created_at",这是一个DATETIME.
SELECT * FROM my_table WHERE ...
Run Code Online (Sandbox Code Playgroud)
你会在WHERE子句中填写什么?
Dre*_*rew 14
WHERE DATEDIFF(NOW(), created_at) <= 7;
Run Code Online (Sandbox Code Playgroud)
我喜欢它,因为它写着:"现在和创建之间的日期差异最多为7天(天)." 在我自己的脑海里
T.J*_*der 12
...WHERE created_at >= Date_Add(now(), INTERVAL -7 DAY)
Run Code Online (Sandbox Code Playgroud)
这是我的首选方式,因为它很清楚.但ADDDATE也很好(INTERVAL为了清晰起见,你可以使用表格;它的默认值是天,所以你看到人们把它关掉).你不希望做一个计算created_at和比较,now()因为这需要计算在created_at每行(假设MySQL不优化出来),而修改now()和比较未修改created_at意味着MySQL不会把该位一次,并使用比较行时的结果,更不用说索引了.