我有一个PHP脚本,可以创建一个新订单并将时间NOW + 15分钟插入数据库。
15分钟过期后,用户无法访问订单页面。
在管理员面板上我只想显示未过期的记录,所以我的问题是我会用什么选择语句来做这个,哪个会最有效?
SELECT * FROM `orders` WHERE datenow > date
“日期”是订单的日期+ 15分钟
P.S。 另外,有没有办法使用PHP来做到这一点,所以我不必对数据库施加太多压力?
非常感谢!
答案 0 :(得分:4)
鉴于您希望记录尚未过期,您希望date
大于NOW()
的所有记录。
SELECT
*
FROM
`orders`
WHERE
`date` > NOW()
正如所提到的评论,通常在数据库方面处理这个问题更好;而不是传输(假设您有拆分数据库和Web服务器)整个数据集以在应用程序代码中过滤它。
将所有日期时间函数放在同一服务器上(在本例中为数据库中)的另一个好处是,特别是在某些共享托管环境中,数据库的时区无法更改。因此,您希望时间比较发生在同一时区。