PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dlaczego funkcja górnego zakresu postgresa dla zakresu dat zwraca ograniczenie na wyłączność?

Odp. Pytanie nr 1 :zamknięte-otwarte to standardowy sposób obsługi zakresów dat, z 20-25-letnią historią w literaturze akademickiej. Zobacz s. 24-25 Danych dwuczasowych Toma Johnstona, a także Tworzenie aplikacji bazodanowych zorientowanych na czas w SQL autorstwa Richarda Snodgrassa.

Ale myślę, że jednym z powodów jest to, że kolejne zakresy nie nakładają się. Jeśli a jest [May2016, Jun2016) i b jest [Jun2016, Jul2016) , nie udostępniają żadnych dni. Dzięki temu „zatrzaskują się” i nie musisz się martwić o skrajne przypadki, w których się zetkną.

Zauważ, że jedną wadą (być może) zamkniętego-otwartego jest to, że nie możesz określić pustego zakresu. [May2016, May2016) jest po prostu sprzecznością samą w sobie, podczas gdy [May2016, May2016] jest błyskawiczna.

Odp. Pytanie nr 2 :Znowu mogło być inaczej, ale myślę o kilku zaletach tworzenia upper([May2016, Jun2016)) zwróć Jun2016 :

  • Zwraca to samo niezależnie od rozdzielczości zakresu.
  • Przypomina bardziej matematyczne znaczenie otwartego punktu końcowego, gdzie jest jedynym możliwa odpowiedź.
  • Zwraca to, co pasuje do „etykiety”, więc prawdopodobnie jest mniej zaskakujące.
  • Pozwala łatwo sprawdzić, czy dwa zakresy „spełniają się”:upper(a) = lower(b) .

Pamiętaj też, że w Postgresie wszystkie typy danych związane z czasem są dyskretne. Kiedyś istniała opcja kompilacji Postgresa z zmiennoprzecinkowym znacznikiem czasu, ale jest przestarzała i nigdy się z nią nie spotkałem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 9.4 - Użyj operatora niestandardowego w ograniczeniu EXCLUDE

  2. Odrzuć część milisekundową ze znacznika czasu

  3. Postgresql wyszukiwanie pełnotekstowe części słów

  4. Jak zrobić pole ARRAY z ograniczeniem klucza obcego w SQLAlchemy?

  5. BŁĄD:ciąg w niekończonym cudzysłowie w miejscu lub w pobliżu