Задавайте вопросы, мы ответим
Вы не зашли.
Подскажите как лучше всего хранить время и дату в базе mysql. Так что-бы можно было делать различные сортировки и т.д.
Неактивен
Если нужны и дата и время, то либо TIMESTAMP, либо DATETIME.
С DATETIME всё понятно, при вставке записи указываете дату в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС.
С типом TIMESTAMP немного иначе. Если в таблице имеется больше двух полей этого типа, то начиная со второго поля, оно себя ведёт так же, как и при DATETIME. А вот первое поле при отсутствии значения, автоматически присваивает себе текущие дату и время (т.е. NOW()). Также значение этого поля будет само автоматически обновляться при обновлениях записей. Но это поведение по умолчанию, его можно немного изменить при надобности
Неактивен
Спасибо за ответ. Остановился на DATETIME. Назрел следующий вопрос, как мне теперь сортировать по годам, месяцам, дням?
Есть такая таблица:
id | putdate
1 | 2008-03-20 12:01:55
...
30| 2008-03-21 07:07:44
Неактивен
Возможно я неправильно понял вопроса, но такого вопроса возникать не должно, ибо формат ГГГГ-ММ-ДД ЧЧ:ММ:СС позволяет сортировать даты как простые строки Т.е. Вам ничего дополнительно выдумывать не нужно, при ORDER BY `datetime_field` записи автоматически выстроятся в нужном порядке.
Или Вы имели ввиду конкретно сортировку только по году либо только по месяцу либо только по дню?
Неактивен
Да. Отдельно по году, отдельно по месяцу, отдельно по дню
Неактивен
ORDER BY DAY(`datetime_field`) -- сортировка по дню
Аналогично YEAR, MONTH
Неактивен
Вы можете использовать функции YEAR(), MONTH() и DAY() для определения года, месяца и дня соответственно применяя их к значению поля типа DATETIME. Таким образом, запросы
SELECT *, MONTH(`datetime_field`) AS `month` FROM `table` ORDER BY `month`; SELECT * FROM `table` ORDER BY MONTH(`datetime_field`);
выдадут данные, отсортированные по месяцу даты.
Неактивен
Блин, я щас понял, что мне нужна не сортировка, а группировка
Неактивен
Аналогично.
GROUP BY DAY(`datetime_field`) -- группировка по дням
Аналогично YEAR и MONTH
Неактивен
Спасибо огромное, разобрался. Замечательная вещь DATETIME
Не знаю как раньше обходился ...
Неактивен
Группировка? Мне кажется, Вам нужна выборка))) Допустим, выбор записей за февраль:
SELECT * FROM `table` WHERE MONTH(`datetime_field`)=2;
В общем, используйте эти удобные функции YEAR(), MONTH() и DAY() в нужных ситуациях. А в остальном всё работает так же, как и не с датами
Неактивен
а как выбрать записи за прошедшую минуту?
Неактивен
Ligalize написал:
а как выбрать записи за прошедшую минуту?
Неактивен