PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо функцията за горен диапазон на postgres за диапазон от дати връща изключителна граница?

ReВъпрос №1 :затворено-отворено е стандартният начин за обработка на периоди от време, с 20-25 години история в академичната литература. Вижте стр. 24-25 от Битемпорални данни от Том Джонстън, както и Разработване на ориентирани към времето приложения за бази данни в SQL от Ричард Снодграс.

Но мисля, че една от причините е, че последователните диапазони нямат припокриване. Ако a е [May2016, Jun2016) и b е [Jun2016, Jul2016) , те не споделят дни. Така че те „щракват заедно“ и не е нужно да се притеснявате за крайните кутии, където се допират.

Имайте предвид, че един недостатък (може би) на затворено-отворено е, че не можете да посочите празен диапазон. [May2016, May2016) е просто противоречие само по себе си, докато [May2016, May2016] е миг.

Re Въпрос #2 :Отново можеше да е различно, но се сещам за няколко предимства от правенето на upper([May2016, Jun2016)) върне Jun2016 :

  • Връща едно и също нещо независимо от разделителната способност на диапазона.
  • Това е по-скоро като математическото значение на отворена крайна точка, където е единственото възможен отговор.
  • Връща това, което съответства на „етикета“, така че вероятно е по-малко изненадващо.
  • Позволява ви лесно да видите дали два диапазона се „срещат“:upper(a) = lower(b) .

Също така имайте предвид, че в Postgres всички типовете данни, свързани с времето, са дискретни. Имаше опция за компилиране на Postgres с времеви отпечатъци, базирани на float, но тя е остаряла и никога не съм я срещал.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Команда за размер на Postgres DB

  2. Как да защитите вашите PostgreSQL бази данни от кибератаки с SQL защитна стена

  3. Postgres INTERVAL използва стойност от таблицата

  4. импортиране на csv файлове на числови типове postgres

  5. Postgresql - Използване на подзаявки с изрази за промяна на последователност