Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Данные за неделю


Автор: DiNaMiK 20.11.2006, 04:43
Суть проблемы такова надо вывести данные за неделю.
В БД Данные даты храню в формате: d.m.Y
Вопрос как можно вывести данные у кого дата недели?

Или же как и в каком формате лучше даные Даты в БД?

БД - MySQL.

Автор: -=Ustas=- 20.11.2006, 20:11
Цитата(DiNaMiK @  20.11.2006,  04:43 Найти цитируемый пост)
Или же как и в каком формате лучше даные Даты в БД?

Лучше в INT(14)

Автор: SelenIT 20.11.2006, 20:35
-=Ustas=-, а что такое INT(14)? И чем плох встроенный DATETIME?

Автор: -=Ustas=- 21.11.2006, 10:50
Цитата(SelenIT @  20.11.2006,  20:35 Найти цитируемый пост)
-=Ustas=-, а что такое INT(14)?

Целочисленный тип, в поле которого лучше хранить UNIX_TIMESTAMP, работать с этим типом гораздо удобнее чем DATETIME или ему подобными. Но это ИМХО, по своему опыту никакие другие типы для даты не использовал.

Автор: SelenIT 21.11.2006, 12:53
-=Ustas=-, меня просто смутила цифра 14 - мне казалось, что обычный INT до 11 знаков, а поскольку TIMESTAMP раньше по умолчанию отображался как именно 14-значное число (да и, по-моему, DATETIME в числовом контексте тоже), у меня возник "глюк", что речь идет о каком-то подобном формате (для организации которого вручную, насколько я понимаю, нужен был бы BIGINT).

Про то, что UNIX_TIMESTAMP в целочисленном поле гораздо удобнее, чем DATETIME, все же осмелюсь не согласиться - как-никак, для применения встроенных функций даты-времени необходима промежуточная операция, да и диапазон значений уже... но это вопрос действительно спорный и вообще, насколько я понимаю, тема для "религиозных войн"...

Автор: -=Ustas=- 21.11.2006, 14:27
Да, я с тобой согласен, что тут дело каждого, но... есть одно но. Вот у тебя допустим табличка с несколькими сотнями тысяч записей, и тебе нужно выбрать записи за прошлую неделю,  если ты данную величину вычислишь программно для запроса, то в запросе у тебя будет сравнение с константной, а если же ты будешь высчитывать на уровне SQL-сервера функциями в запросе, то как ты думаешь, что будет быстрее?!

Автор: SelenIT 21.11.2006, 15:18
-=Ustas=-, но ведь в случае одиночной выборки мне ничто не помешает точно так же подставить в запрос константу и для DATETIME, возможно, ее даже удобнее будет сформировать из-за большей "человекопонятности" формата smile
А вот для группировки по временным интервалам (скажем, для отчета по дням недели или по времени суток) дополнительный FROM_UNIXTIME() вполне может сказаться на скорости...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)