Доброго времени суток. Есть таблица с записями, в которой даты хранятся в типе date (YYYY-MM-DD). Допустим мне надо вывести записи на определенный год, но для того, что бы обработать выборку мне все равно надо выгрузить в нее все строки, что я считаю неправильно, если записей будет 100500+. Подскажите, как можно в выборку записать строки с нужным годом? Пока только могу разделить год, месяц и день на отдельные столбцы (что тоже считаю не совсем правильным). --- Добавлено --- аа туплю жестко чет, разобрался
Это нормально он сам не понял. Лучше/хуже можно обсуждать только в определённом контексте, а не абстрактно. Когда используешь родные для MySQL типы DATE, DATETIME и TIMESTAMP, твои запросы выглядят лучше, ты можешь выполнить пробный запрос в консоли и понять результат, т.к. увидишь '2017-05-19' а не 289738718738234. Плюс множество встроенных функций для даты и времени — ты можешь их использовать с типом DATE, а вот INT понадобится сначала преобразовать в "настоящую" дату. С другой стороны, если тебя интересует не голый SQL, а в связке с PHP, а на стороне PHP ты работаешь с таймстампом в виде целого числа — возможно тип INT сбережет тебе несколько десятков строк на преобразования туда и обратно. Но как только ты перестанешь велосипедить и изучишь серьёзный фреймворк, то перестанешь экономить строки и наносекунды. В приоритете будет удобство использования. Так что лучше? Зависит от твоего уровня и от задачи.
@artoodetoo уровень новичка, задачи: просто выводить строки за определённый день, месяц или год, и (пока что) не вижу плюсов в хранении даты в unix )) Спасибо за развернутый ответ. В моём понимании они отличаются часовыми поясами и диапозоном))
@san4ez, в mysql есть функции year, month, day и т.п. Гугли, и будет тебе счастье. О такой простой и распространённой задаче, как получить данные за один год, люди подумали. Вот с часовыми поясами - тут сложнее.