2011-11-17 13 views
5

Czy istnieje standardowy sposób przechowywania roku i miesiąca w bazie danych? Muszę sporządzać raporty na podstawie miesięcy i lat.Jak przechowywać rok w bazie danych?

Nie mogę używać dat i funkcji do wyciągania miesięcy w czasie rzeczywistym, ponieważ stoły są ogromne, więc potrzebuję wstępnego przetwarzania.

+0

Powinieneś zaakceptować jedną z odpowiedzi, jeśli ci pomogły – aydow

Odpowiedz

3

Prawdopodobnie najbardziej sensownym jest używanie date_trunc() na miesiąc. Możesz również dodać ograniczenie sprawdzania dla date_trunc(), które jest równe wartości, jeśli chcesz.

7

Chciałbym pójść z tym, co proponuje @Michael.

Wydobywając miesiąc i rok z daty jest super szybki z EXTRACT lub to_char(), prawdopodobnie nie ma potrzeby wstępnego przetwarzania.

I na dysku date only occupies 4 byte nie jest lepiej.

Alternatywą są dwie kolumny integer z ograniczeniami kolumn, aby zabezpieczyć przed nielegalnymi datami. Zajmuje 2x 4 bajty.

Lub nawet smallint, aby zaoszczędzić pamięć RAM i miejsce na dysku. Przeczytaj i zrozum, wyrównanie danych w pamięci na dysku. W wielu przypadkach nic nie oszczędzasz z kolumnami smallint. Napisałem o tym więcej tutaj: Calculating and saving space in PostgreSQL

Najlepiej wybrać kolumnę z datą.

Powiązane problemy