Как сохранить годовой месяц в базе данных? - PullRequest
6 голосов
/ 17 ноября 2011

Существует ли стандартный способ хранения года и месяца в базе данных? Мне нужно сделать несколько отчетов по месяцам и годам.

Я не могу использовать даты и функции для извлечения месяцев в реальном времени, потому что таблицы огромные, поэтому мне нужна предварительная обработка.

Ответы [ 2 ]

8 голосов
/ 17 ноября 2011

Я бы пошел с , что @Michael предлагает .

Извлечение месяца и года из date супер быстрая с EXTRACT или to_char(), вероятно, нет необходимости в предварительной обработке.

A date занимает всего 4 байта на диске, вряд ли становится лучше, чем эта.

Возможной альтернативой могут быть 2 integer столбцы с ограничениями на столбцы для защиты от недопустимых дат.Занимает 2 x 4 байта.

Или даже 2 smallint для экономии оперативной памяти и дискового пространства.Прочитайте и поймите выравнивание данных в хранилище.Во многих случаях вы ничего не экономите с smallint столбцами.См .:

Лучше всего использовать столбец date.

4 голосов
/ 17 ноября 2011

Вероятно, наиболее разумным является использование date_trunc() в месяц.Вы также можете добавить проверочное ограничение для date_trunc(), равное значению, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...