MySQL select where timenow > 数据库时间

MySQL select where timenow > database time

我有一个 PHP 脚本,它创建一个新订单并将时间 NOW + 15 分钟插入数据库。

15 分钟后用户无法访问订单页面。

在管理面板上,我只想显示尚未过期的记录,所以我的问题是我将使用什么 select 语句来执行此操作,哪种语句最有效?

SELECT * FROM `orders` WHERE datenow > date

"date"是下单日期+15分钟

P.S。 或者,有什么方法可以使用 PHP 来做到这一点,这样我就不必对数据库施加太大压力吗?

非常感谢!

鉴于您想要尚未过期的记录,您想要 date 大于 NOW() 的所有记录。

SELECT 
    * 
FROM 
    `orders` 
WHERE 
    `date` > NOW()

如评论所述,通常最好在数据库端处理;而不是传输(假设您已拆分数据库和 Web 服务器)整个数据集以在应用程序代码中对其进行过滤。

将所有日期时间函数都放在同一台服务器上(在这种情况下是在数据库中)的另一个好处是,尤其是在某些共享主机环境中,无法更改数据库的时区。因此,您希望时间比较发生在同一时区。