MySQL "меньше чем" не работает должным образом - PullRequest
2 голосов
/ 15 февраля 2012

У меня есть этот запрос

SELECT * 
FROM  `t_activities` 
WHERE  `uid` =2
AND  `del` =0
AND UNIX_TIMESTAMP(  `time` ) < 1327518485
ORDER BY  `id` DESC 
LIMIT 4

Изображение ниже - то, что возвращается.enter image description here

Время 1327518485 фактически конвертируется из строки даты и времени '2012-01-25 20:08:05' с использованием php strtotime('2012-01-25 20:08:05').

В запросе я ожидаю загрузки файлов, которые были вставленыдо '2012-01-25 20:08:05' или 1327518485;но результат все еще содержит файлы, вставленные после него.

Что-то не так с тем, как я обработал условие в запросе?

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

Вам не нужно выполнять преобразование метки времени.Вы можете просто сделать:

`time` < '2012-01-25 20:08:05'

У вас могут быть проблемы с часовым поясом с отметкой времени.

1 голос
/ 16 февраля 2012

Чтобы

UNIX_TIMESTAMP(`time`) < 1327518485

работал правильно, 'time' должно быть столбцом типа timestamp.Если «время» - это столбец date или datetime, UNIX_TIMESTAMP() вызывает преобразование часового пояса.

При вставке значения в столбец «время» как timestamp, используйте UNIX_TIMESTAMP()вместо NOW() для сохранения текущего значения времени независимо от текущего часового пояса.

...