我的last_activity_time
表格中有一列users
,我想选择last_activity_time在过去5分钟内的用户。在这方面,我需要将列last_activity_time
转换为UNIX_TIMESTAMP格式,以便我可以将其与当前日期和时间进行比较strtotime(date("Y-m-d h:i:s"))
我尝试使用SQL来选择它,但它会触发未知列last_activity
的错误。
确实我在表格中没有这样的列,但我使用as alias
创建了该列我的SQL有什么问题,如何解决?
$sql = "SELECT id,firstname,
lastname,
UNIX_TIMESTAMP(last_activity_time) AS last_activity
FROM $main_table WHERE
(last_activity + 5) > ".strtotime(date('Y-m-d h:i:s'))."
";
$query = mysqli_query($conn,$sql);
die(mysqli_error($conn));
谢谢。
答案 0 :(得分:1)
尝试将WHERE
更改为HAVING
,因为在mysql中您无法在WHERE
语句中使用列别名。
$sql = "SELECT
id,
firstname,
lastname,
UNIX_TIMESTAMP(last_activity_time) AS last_activity
FROM $main_table
HAVING (last_activity + 5) > ".strtotime(date('Y-m-d h:i:s'))."
";
或者您可以在WHERE
中使用完整功能列:
$sql = "SELECT
id,
firstname,
lastname,
UNIX_TIMESTAMP(last_activity_time) AS last_activity
FROM $main_table
WHERE (UNIX_TIMESTAMP(last_activity_time) + 5) > ".strtotime(date('Y-m-d h:i:s'))."
";