В моем приложении для чата я использую приложение Android для отправки времени, когда сообщение было создано на моем сервере MySQL, без части миллисекунды. Теперь странная часть, моя таблица имеет две записи с одинаковым значением миллисекунд. Еще страннее то, что когда я конвертирую миллисекунды в удобочитаемое время, значения совершенно разные!
Вот вывод из двух разных запросов:MySQL TIMESTAMP ведет себя странно
SELECT max(UNIX_TIMESTAMP(created_at)), created_at, message FROM messages WHERE mtype = 0 AND groups_id = 1;
max(UNIX_TIMESTAMP(created_at)) | created_at | message |
+--------------------------------+---------------------+---------+
| 1464096148 | 2016-04-25 13:57:18 | The
SELECT UNIX_TIMESTAMP(created_at), created_at, MESSAGE FROM messages WHERE mtype = 0 AND groups_id = 1 ORDER BY created_at DESC LIMIT 1;
max(UNIX_TIMESTAMP(created_at)) | created_at | message |
+--------------------------------+---------------------+---------+
| 1464096148 | 2016-05-24 18:52:28 | test
Выход последнего запроса, что я помню, посылая от моего клиента приложения.
Я не вижу здесь никаких проблем, она должна быть разной, вы выбираете максимальную один в первом запросе, который, вероятно, принадлежит к '2016-05-24' – sagi
@ sagi, пожалуйста, см. значение миллисекунд в первом столбце, они абсолютно одинаковы. И затем проверьте, что второй столбец совершенно другой. –
Почему? у вас более одной записи, поэтому, когда вы выберете 'MAX()', она выберет максимальную метку времени! Остальные столбцы без предложения group by и функции агрегации будут выбраны случайным образом. – sagi