Mysql Выберите дату и время, больше, чем метка времени

Я пытаюсь добавить предложение WHERE к моему SELECT, чтобы получить даты из моей таблицы WHERE datetime в таблице больше, чем переданная метка времени.

SELECT * FROM record WHERE UNIX_TIMESTAMP(REPLACE(date_value, 'T', '')) >= 1388552400;

Вот образец данных

+--------+------------------------------+
| id     | date_value                   |
+--------+------------------------------+
| 344380 | 2014-12-01T00:00:00          |
| 344381 | 2014-12-23T00:00:00          |
| 344382 | 2014-12-16T00:00:00          |
| 344383 | 2014-12-24T00:00:00          |
| 344384 | 2014-12-17T00:00:00          | 
+--------+------------------------------+

Я пробовал несколько вещей, но получаю либо пустой набор, либо предупреждение о неправильном дате и времени.


person Dandrews    schedule 04.01.2015    source источник


Ответы (1)


Вам нужно заменить T в вашем date_values пробелом, ' ' не пустой строкой, ''.

Таким образом, следующий запрос должен работать должным образом:

SELECT * FROM record WHERE UNIX_TIMESTAMP(REPLACE(date_value, 'T', ' ')) >= 1388552400;

Чтобы отладить ваш исходный запрос, я выполнил следующее:

SELECT id, UNIX_TIMESTAMP(REPLACE(date_value, 'T', '')) FROM record;

который вернул временные метки всех 0.

Затем я написал:

SELECT id, REPLACE(date_value, 'T', '') FROM record;

где я смог увидеть недостающее место в вашем date_value.

http://sqlfiddle.com/#!2/a184f/6

person jaynp    schedule 04.01.2015
comment
Ух, смотрел на это в течение часа и даже не понимал, что это должен быть пробел. Спасибо! - person Dandrews; 05.01.2015