За последние 24 часа нас посетили 21636 программистов и 1690 роботов. Сейчас ищут 1893 программиста ...

Посоветуйте, как хранить дату

Тема в разделе "MySQL", создана пользователем san4ez, 18 май 2017.

  1. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    Доброго времени суток. Есть таблица с записями, в которой даты хранятся в типе date (YYYY-MM-DD). Допустим мне надо вывести записи на определенный год, но для того, что бы обработать выборку мне все равно надо выгрузить в нее все строки, что я считаю неправильно, если записей будет 100500+.
    Подскажите, как можно в выборку записать строки с нужным годом?
    Пока только могу разделить год, месяц и день на отдельные столбцы (что тоже считаю не совсем правильным).
    --- Добавлено ---
    аа туплю жестко чет, разобрался :D
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    уж лучше в Unix хранить, а столбец в int
    да поможет тебе священный $_SERVER['REQUEST_TIME']
     
  3. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    чем лучше?
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    не, ошибся :D и столбец в таймстапе бы нужн. дата тайм быстрее в секундах
     
  5. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    ну мне время просто не нужно, у меня чисто дата )) и чем лучше timestamp?
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    выше ответил
     
  7. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    я этого не понял....
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Это нормально :) он сам не понял.

    Лучше/хуже можно обсуждать только в определённом контексте, а не абстрактно. Когда используешь родные для MySQL типы DATE, DATETIME и TIMESTAMP, твои запросы выглядят лучше, ты можешь выполнить пробный запрос в консоли и понять результат, т.к. увидишь '2017-05-19' а не 289738718738234. Плюс множество встроенных функций для даты и времени — ты можешь их использовать с типом DATE, а вот INT понадобится сначала преобразовать в "настоящую" дату.

    С другой стороны, если тебя интересует не голый SQL, а в связке с PHP, а на стороне PHP ты работаешь с таймстампом в виде целого числа — возможно тип INT сбережет тебе несколько десятков строк на преобразования туда и обратно.

    Но как только ты перестанешь велосипедить и изучишь серьёзный фреймворк, то перестанешь экономить строки и наносекунды. В приоритете будет удобство использования.

    Так что лучше? Зависит от твоего уровня и от задачи.
     
    san4ez нравится это.
  9. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    @artoodetoo уровень новичка, задачи: просто выводить строки за определённый день, месяц или год, и (пока что) не вижу плюсов в хранении даты в unix ))
    Спасибо за развернутый ответ. В моём понимании они отличаются часовыми поясами и диапозоном))
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.584
    Симпатии:
    1.762
    @san4ez, в mysql есть функции year, month, day и т.п. Гугли, и будет тебе счастье. О такой простой и распространённой задаче, как получить данные за один год, люди подумали.

    Вот с часовыми поясами - тут сложнее.
     
  11. san4ez

    san4ez Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    @mkramer я давно уже нашел решение, но все равно спасибо =)
     
    denis01 нравится это.