避免在mySql中使用相同结果的函数

时间:2014-11-15 19:32:44

标签: mysql

我写了这个查询:

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;  

但没有效果

2 个答案:

答案 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代码是   执行后,列值可能尚未确定。