这样做的SQL方式是什么:
$now = date('Y-m-d H:i:s', time())
SELECT * FROM table WHERE '$now' > time
是吗:
SELECT * FROM table WHERE now() > time
答案 0 :(得分:9)
你的第二个例子是正确的纯SQL方法。
SELECT * FROM table WHERE NOW() > `time`
虽然我发现反转它们更具可读性,因为似乎更合乎逻辑地认为 time
的价值现在是在之前。“这实际上没有区别,但是,并且基于我的偏好。
SELECT * FROM table WHERE `time` < NOW()
您可以在查询中使用更多本机MySQL日期函数described in the MySQL documentation.
例如,要与5分钟前进行比较,请使用DATE_SUB()
SELECT * FROM table WHERE `time` < DATE_SUB(NOW(), INTERVAL 5 MINUTE)
答案 1 :(得分:-2)
我不明白问题 - 第一个例子是根据你的php后端计算日期,第二个是使用mysql服务器的内置函数。本质效应是一样的。
如果你曾经考虑过,mysql中的now()函数是确定性的(它会正确复制到slave),所以即使在master-slave环境中,两个代码片段都没有区别,只要php后端和sql server有同步时钟。
只是为了澄清:当然如果你的php后端和mysql时钟不同步,两个代码片段之间会有差异,但在正常环境中这不应该发生,至少是不相关的。