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

避免在mySql中使用相同结果的函数,mysql,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

我写了这个查询:

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;  

但是不起作用

你可以用日期代替时间。它允许您格式化任何时间戳,当前时间戳为默认值。比如说

echo date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (the MySQL DATETIME format)

显然,您的第二个查询不起作用。它将给出WHERE子句中找不到的COLLMN“unixTimeEND”

只能在GROUP BY、ORDER BY或HAVING中使用列别名 条款

标准SQL不允许在WHERE中引用列别名 条款施加此限制是因为当WHERE代码 执行时,可能尚未确定列值


您选择的列可以根据需要进行格式化,因此如果您想要unix_timestmp,那么这就是您要做的。在“where”选择标准中,您必须以某种格式获取它们,以执行所需的检查。在同一列上使用相同的函数可能是巧合。