Кто в каком виде хранит дату в мускуле?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Кто в каком виде хранит дату в мускуле?

Сообщение zelenin »

Nerf писал(а):С часовыми поясами :mrgreen: Иногда надуманные. :lol: База вернет, то что сохранили. Если правильно не отформатировать, то на фронте мб дата в будущем например, не?
проблема проггера. если проект поддерживает зоны, надо это учитывать.
Nerf писал(а):
и ждем пока mysql все 2000000 строк сконвертирует в datetime
Это будет дольше, чем "огромный in с диапазонами"?!
уверен, что да. это будет ОЧЕНЬ долго.
Nerf писал(а):Как вы этот in представляете, не могу сходу понять?
ну а как вы найдете все субботы и воскресенья для int? in (created between (15654654,2656465) or .... or ... or ... or ...) итд. ни то ни другое не красиво.

R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: Кто в каком виде хранит дату в мускуле?

Сообщение R3D3 »

Пользуясь случаем, попиарю PostgreSQL - работа с датами и временем на высочайшем уровне, намного круче чем в MySQL!
  • Специальный формат timestamp with timezone - забудьте про проблемы таймзон, база сделает все за вас.
  • Точность хранения времени до микросекунд - можно считать даже астрономические данные.
  • Любые кастомные подтипы времени, констрейнты, интервалы времени - один раз задекларировал, дальше база делает все за вас.
  • Широчайший и гибчайший выбор индексов для даты/времени - накладываете индекс по выражению + интервальный индекс, дальше ищете по timestamp полю с молниеносной скоростью и база делает все за вас.
Yii Jabber Conference: yii@conference.jabber.ru

Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Кто в каком виде хранит дату в мускуле?

Сообщение Nerf »

уверен, что да. это будет ОЧЕНЬ долго.
В году ~52 недели, ~104 суббот и воскресений. Чтобы написать ваши условия, то нужно знать в каком диапозоне даты. Там такая портянка будет... Сомнитльно, что проверка каждого значения из 2000000 строк с такой портянкой условий будет быстрее...

Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Кто в каком виде хранит дату в мускуле?

Сообщение Nerf »

Пользуясь случаем, попиарю PostgreSQL - работа с датами и временем на высочайшем уровне, намного круче чем в MySQL!
+ функциональные индесы

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Кто в каком виде хранит дату в мускуле?

Сообщение zelenin »

R3D3 писал(а):Пользуясь случаем, попиарю PostgreSQL - работа с датами и временем на высочайшем уровне, намного круче чем в MySQL!
  • Специальный формат timestamp with timezone - забудьте про проблемы таймзон, база сделает все за вас.
  • Точность хранения времени до микросекунд - можно считать даже астрономические данные.
  • Любые кастомные подтипы времени, констрейнты, интервалы времени - один раз задекларировал, дальше база делает все за вас.
  • Широчайший и гибчайший выбор индексов для даты/времени - накладываете индекс по выражению + интервальный индекс, дальше ищете по timestamp полю с молниеносной скоростью и база делает все за вас.
это верно. не знаю зачем нужен mysql, если есть postgres)

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Кто в каком виде хранит дату в мускуле?

Сообщение zelenin »

Nerf писал(а):
уверен, что да. это будет ОЧЕНЬ долго.
В году ~52 недели, ~104 суббот и воскресений. Чтобы написать ваши условия, то нужно знать в каком диапозоне даты.
это не мои условия, а условия задачи.
Nerf писал(а):Там такая портянка будет...
я начал с того, что там портянка будет.
Nerf писал(а):А я Сомнитльно, что проверка каждого значения из 2000000 строк с такой портянкой условий будет быстрее...
как работает БД и индексы знаем? при in не надо сравнивать каждое значение - работают индексы. при вашем способе (конвертирование каждой строки в datetime) мы точно будем проверять все строки.

Аватара пользователя
samdark
Администратор
Сообщения: 9405
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Кто в каком виде хранит дату в мускуле?

Сообщение samdark »

Можно пару слов почему именно в int?
Я тоже всегда так делал, но чота недавно пообщался с командой программеров, которые крупный проект пишут и говорят это плохой тон в int хранить дату.
Потому что меньше преобразований и отсутствует возможность ошибиться с часовыми поясами.

Обожаю, когда кто-то говорит, что что-либо является плохим тоном, но не может объяснить, почему именно.

А как будет выглядеть код если время хранится в int ? Думаю, что сложнее.
WHERE DAYOFWEEK(FROM_UNIXTIME(created_at)) IN (6,7) или посчитать интервалы на стороне PHP

R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: Кто в каком виде хранит дату в мускуле?

Сообщение R3D3 »

Sam Dark писал(а): Обожаю, когда кто-то говорит, что что-либо является плохим тоном, но не может объяснить, почему именно.

А как будет выглядеть код если время хранится в int ? Думаю, что сложнее.
WHERE DAYOFWEEK(FROM_UNIXTIME(created_at)) IN (6,7) или посчитать интервалы на стороне PHP

Так тут же уже вроде 100500 недостатков перечислили, и ни одного преимущества. Неужели мало? :cry:
Yii Jabber Conference: yii@conference.jabber.ru

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Кто в каком виде хранит дату в мускуле?

Сообщение zelenin »

Sam Dark писал(а):Обожаю, когда кто-то говорит, что что-либо является плохим тоном, но не может объяснить, почему именно.
я например с трудом смогу объяснить почему испражняться посередине улицы является плохим тоном. буду мямлить что-то про мораль и детей, но для вас это очевидно смешно.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Кто в каком виде хранит дату в мускуле?

Сообщение zelenin »

Sam Dark писал(а):Потому что меньше преобразований
чего с чем? откуда у меня возьмется int в проекте, в котором я использую datetime? обожаю такую фактологию.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Кто в каком виде хранит дату в мускуле?

Сообщение zelenin »

R3D3 писал(а):
Sam Dark писал(а): Обожаю, когда кто-то говорит, что что-либо является плохим тоном, но не может объяснить, почему именно.

А как будет выглядеть код если время хранится в int ? Думаю, что сложнее.
WHERE DAYOFWEEK(FROM_UNIXTIME(created_at)) IN (6,7) или посчитать интервалы на стороне PHP

Так тут же уже вроде 100500 недостатков перечислили, и ни одного преимущества. Неужели мало? :cry:
инертность - сильное чувство) посмотрите на автора - он пришел спросить мнения, а в итоге скатился в защиту своей позиции.

R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: Кто в каком виде хранит дату в мускуле?

Сообщение R3D3 »

Ничего страшного, похоливарить на форуме это дело незазорное и расслабляющее! Кто хочет увидеть - найдет для себя правду.

По теме:

В случае INT:

Код: Выделить всё

WHERE DAYOFWEEK(FROM_UNIXTIME(created_at)) IN (6,7) 
или

Код: Выделить всё

 посчитать интервалы на стороне PHP
В случае TIMESTAMP:

Код: Выделить всё

WHERE DAYOFWEEK(created_at) IN (6,7)
Внимание, вопрос: в каком случае мы видим меньше преобразований?
Yii Jabber Conference: yii@conference.jabber.ru

Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Кто в каком виде хранит дату в мускуле?

Сообщение Nerf »

in (created between (15654654,2656465) or .... or ... or ... or ...)
Это что за покемон? :mrgreen:

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Кто в каком виде хранит дату в мускуле?

Сообщение zelenin »

Nerf писал(а):
in (created between (15654654,2656465) or .... or ... or ... or ...)
Это что за покемон? :mrgreen:
это то, в каком виде придется выбирать субботы и воскресенья, если мы отказываемся от datetime на уровне базы.

R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: Кто в каком виде хранит дату в мускуле?

Сообщение R3D3 »

zelenin писал(а):
Nerf писал(а):
in (created between (15654654,2656465) or .... or ... or ... or ...)
Это что за покемон? :mrgreen:
это то, в каком виде придется выбирать субботы и воскресенья, если мы отказываемся от datetime на уровне базы.
Это мы все обсуждаем решение задачи которую я привел для примера когда с int временем работать сложнее чем с timestamp viewtopic.php?f=19&t=36434#p186641

А вот еще задачка позабористее:

Допустим у нас ведется логирование всех логинов пользователя в систему в отдельной таблице. Нужно вывести всех пользователей и все дни за последние два года, в которые эти пользователи логинились в систему более 10 раз. В случае timestamp мы извлекаем день day_no из времени логина пользователя, далее делаем group by user_id, day_no и фильтруем все группы в которых больше 10 записей. Некоторые детали я опустил, но итоговый запрос на 5-6-7 строчек получается. Как это сделать в случае int ? Я сходу даже себе и не представляю.
Yii Jabber Conference: yii@conference.jabber.ru

Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Кто в каком виде хранит дату в мускуле?

Сообщение Nerf »

zelenin писал(а):
Nerf писал(а):
in (created between (15654654,2656465) or .... or ... or ... or ...)
Это что за покемон? :mrgreen:
это то, в каком виде придется выбирать субботы и воскресенья, если мы отказываемся от datetime на уровне базы.
Я не понял как можно в sql-запросе такое написать, об этом и был вопрос. Прямо такое же не будет работать, псевдокод?

R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: Кто в каком виде хранит дату в мускуле?

Сообщение R3D3 »

Да псевдокод ну и что? Ход мысли то сразу понятен. Вот синтаксически работающая версия если угодно http://sqlfiddle.com/#!9/928e1d/1
Yii Jabber Conference: yii@conference.jabber.ru

Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Кто в каком виде хранит дату в мускуле?

Сообщение Nerf »

R3D3 писал(а):Да псевдокод ну и что? Ход мысли то сразу понятен. Вот синтаксически работающая версия если угодно http://sqlfiddle.com/#!9/928e1d/1
Дело в том, что предлагалось через in делать, я и спросил как.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Кто в каком виде хранит дату в мускуле?

Сообщение zelenin »

Nerf писал(а):
zelenin писал(а):
Nerf писал(а): Это что за покемон? :mrgreen:
это то, в каком виде придется выбирать субботы и воскресенья, если мы отказываемся от datetime на уровне базы.
Я не понял как можно в sql-запросе такое написать, об этом и был вопрос. Прямо такое же не будет работать, псевдокод?
псевдокод. читать как перечисление between'ов, каждый из которых один уикенд. итого 52*кол-во лет between'ов, разделенных or.
UPD: ну да, выше все обсудили.

Аватара пользователя
samdark
Администратор
Сообщения: 9405
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Кто в каком виде хранит дату в мускуле?

Сообщение samdark »

Под меньше преобразований я имел ввиду случай с часовыми поясами (у меня они в каждом проекте) и тот факт, что timestamp при выборке из базы прилетает в PHP строкой и из PHP улетает тоже строкой.

Ответить