Где текущая временная метка между двумя UNIX-метками времени SQL-запроса - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь сделать запрос, где время () находится между date_start и date_end я попробовал:

date_start > CURRENT_TIMESTAMP AND date_end < CURRENT_TIMESTAMP

и

WHERE CURRENT_TIMESTAMP BETWEEN date_start AND date_end

Тем не менее это не тренировка для меня. Пробовал CURRENT_TIMESTAMP () тоже.

Mysql

id  item_id percentage  rabatcode   date_start  date_end
9   6       50          XXY-GGS-82  1323817200  1324422000  

Ответы [ 3 ]

2 голосов
/ 15 декабря 2011

Вы упоминаете в заголовке своего вопроса, что хотите проверить, когда текущее время находится между метками времени UNIX, поэтому вам нужно использовать функцию UNIX_TIMESTAMP():

WHERE UNIX_TIMESTAMP() BETWEEN date_start AND date_end

NOW() возвращает строку (из руководства: '2007-12-15 23:50:26'), поэтому она не будет работать для ваших целей.

2 голосов
/ 15 декабря 2011

Сравните NOW() со значениями с помощью FROM_UNIXTIME():

WHERE NOW() BETWEEN FROM_UNIXTIME(date_start) AND FROM_UNIXTIME(date_end)

В идеале, если вы можете изменить структуру базы данных, обычно гораздо лучше хранить даты как родные для MySQL *Тип 1006 *, в связи с тем, что функции обработки данных MySQL работают с типами дат без преобразования.

0 голосов
/ 15 декабря 2011

Проблема в том, что вы не можете использовать CURRENT_TIMESTAMP дважды. Вам следует обратить внимание на преобразование дат в другой формат и сравнение их с NOW() (если их уже нельзя сравнить с NOW().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...