如何设置SET @unix_four_weeks_ago = UNIX_TIMESTAMP(curdate()) - 2419200;
SQLSET @unix_four_weeks_ago = UNIX_TIMESTAMP(curdate()) - 2419200;
SELECT id FROM USERS WHERE timemodified >= @unix_four_weeks_ago;
PHP $result=$mysqli->query("SET @unix_four_weeks_ago = UNIX_TIMESTAMP(curdate()) - 2419200;SELECT id FROM USERS WHERE timemodified >= @unix_four_weeks_ago; ");
查询是关于获取最近4周的记录。查询在SQL中工作得很好,但当我运行php文件时没有给出任何输出。
mysqli_query()
只允许一条语句。虽然可以使用mysqli_multi_query()
,但也可以将查询重写为:
SELECT id
FROM (SELECT @unix_four_weeks_ago := UNIX_TIMESTAMP(curdate()) - 2419200
) params CROSS JOIN
USERS
WHERE timemodified >= @unix_four_weeks_ago;
可以直接在语句中设置值
正如其他人已经说过的,multi_query将允许您一次运行多个语句。然而,这个查询是相当复杂和难以阅读,你至少必须记录幻数2419200
的含义。此外,由于DST的考虑,该查询对于包含DST切换事件的时间段并不完全正确。您还可以将此查询转换为
SELECT id from users where timemodified >= UNIX_TIMESTAMP(SUBDATE(curdate(), 28))
更容易读,并且使用了适当的日期时间计算,更正确。