2011-08-26 126 views
3

在MySQL 5.1 InnoDB环境中,根据日期间隔选择数据的最佳方法是什么?让MySQL找出日期间隔与PHP

让MySQL的通过像DATE_SUB(CURDATE(), INTERVAL 5 DAY) > created_at

做,或有PHP通过strtotime准备提交前的日期?

回答

3

我会通过查询到MySql。这样,你就可以保持从PHP中选择日期的逻辑。 PHP只是处理显示,而且你还可以从数据库中获得更小的数据块。

1

在这种情况下,我认为从性能的角度来看并不重要。你的表情(DATE_SUB)将被评估一次。另一点是你的web服务器和mysql服务器可以使用不同的时区,所以你可能会有不同的结果。

0

我会尽可能保持与数据库最接近的逻辑 - 它有更多的能力做任何优化。此外,还可以更轻松地更改表格,将来可以更改PHP(也许是java/C#...)的使用。它还区分高炮数据库(数据),PHP(用于HTML交付),使用Javascript(用于用户享受),CSS使用(把事情漂亮)

0

您可以选择一个日期范围BETWEEN ... AND ...

SELECT * FROM table1 t1 WHERE now() BETWEEN t1.startdate AND t1.enddate 

SELECT * FROM table1 t1 
WHERE t1.somedate BETWEEN DATE_SUB(now(),INTERVAL 1 DAY) AND now() 

我喜欢这种语法,因为它是如此接近我的范围的心理画面。