我写了这个查询:
SELECT e.evt_end, UNIX_TIMESTAMP(e.evt_end) AS unixTimeEND FROM events AS e
WHERE UNIX_TIMESTAMP(e.evt_end) > '.time().' ORDER BY unixtimeEND;
我使用两次函数UNIX_TIMESTAMP()来获得相同的结果,这可能是浪费。
有没有更好的办法?我想的是:
SELECT e.evt_end, UNIX_TIMESTAMP(e.evt_end) AS unixTimeEND FROM events AS e
WHERE unixTimeEND > '.time().' ORDER BY unixtimeEND;
但没有效果
答案 0 :(得分:0)
您可以使用date()而不是time()。它允许您格式化任何时间戳,当前时间戳为默认值。 http://php.net/manual/en/function.date.php例如
echo date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)
答案 1 :(得分:0)
显然你的第二个问题不起作用。 它将提供collumn' unixTimeEND'在WHERE子句中找不到
您只能在GROUP BY,ORDER BY或HAVING中使用列别名 条款。
标准SQL不允许您引用WHERE中的列别名 条款。强制执行此限制是因为WHERE代码是 执行后,列值可能尚未确定。