2014-11-15 3 views
0

Я написал этот вопрос:Избегайте использования функции для такого же результата в 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; 

но не работает

+1

Выбранные столбцы, вы отформатируете их по своему усмотрению, поэтому, если вы хотите unix_timestmp, то это то, что вы делаете. В «где» (критерии отбора) вы должны получить их в формате для выполнения необходимых проверок. Возможно, вы используете одну и ту же функцию в одном столбце. –

ответ

0

Очевидно ваш второй запрос обыкновение работы. Это даст collumn 'unixTimeEND' не найден в ИНЕКЕ

Вы можете использовать только псевдонимы столбцов в GROUP BY, ORDER BY или HAVING положения.

Стандарт SQL не позволяет ссылаться на псевдоним столбца в предложении WHERE . Это ограничение наложено, поскольку при выполнении кода WHERE значение столбца может еще не определено.

0

вы можете использовать дату() вместо времени(). Он позволяет вам отформатировать любую временную метку, текущую временную метку по умолчанию. 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) 
Смежные вопросы