Wpis z mikrobloga

@Ginden: Użyj hstore/jsonb i zapisuj rok, miesiąc i dzień w osobnych kluczach. Jeśli Twój usecase na to pozwala, to zastosuj daterange do zapisania możliwego zakresu dat.
@ginden: zasadniczo:
dodaj 4 kolumny:
data date (może być null)
rok tinyint/int (może być null)
miesiąc tinyint/int (może być null)
dzień tinyint/int (może być null)

tam gdzie znasz datę zapisuj w polu data (i ew. na intach), tam gdzie nie znasz zapisuj na intach - te informacje które znasz, np rok i miesiąc.

przechowywanie niepełnej daty byłoby kompletnie bez sensu - lepiej przechowywać null - będzie to info dla filtrów, że
pytanie - po co.

@edgar_k: Robisz stronę o monarchach europejskich w historii i chcesz dać możliwość wyszukiwania po dacie urodzenia.
Niestety, część królów ma nie w pełni znaną datę urodzenia, np. jedne źródła mówią o urodzeniu w czerwcu 1233, drugie o urodzeniu "pod koniec" 1232, a trzecie - o październiku 1233.
@Ginden: W takim przypadku źle do tego podchodzisz. To, co chcesz zapisać, nie jest datą. Nie znajdziesz dobrego rozwiązania, jeśli będziesz starał się to zapisać jako datę. Zwłaszcza, jeśli masz wiele opcji.
Zapisuj jako datę tylko to, co jest datą per se. Wszystko inne zapisuj w inny sposób. W przytoczonej sytuacji chyba najlepiej zrobić kolumnę uncertainbdate typu varchar obok standardowej bdate będącej typu date_. Będzie zabawa z wyszukiwaniem, wiem.
@Ginden: "pod koniec 1232" to nie data. Pozostałe przytoczone przez Ciebie przykłady tak, ale "pod koniec" nie.
Pomyśl o tym tak - jeśli jest rozbieżność pomiędzy źródłami, to data nie jest znana, znane są pewne opinie na temat tego, jaka ona może być; w związku z tym tam, gdzie źródła podają datę, zapisuj datę a tam, gdzie źródła podają opinię, zapisuj opinię.
@Ginden:
możesz datę trzymać w date dla indeksu, a osobno informację o dostępności danych rok/miesiąc/dzień w osobnych flagach, czy w jakimś small czy tiny int na bitach, tylko na potrzeby wyświetlania
na flagach możesz też trzymać informacje typu dokładnie/na poczatku/pod koniec/brak dla rok/miesiac/dzien
dla zakresu też możesz użyć flag poczatek zakresu/koniec zakresu
różne daty urodzenia trzymałbym oczywiście w osobnych rekordach
dla zakresów, to już zależy od wyszukiwania, albo osobny rekord albo