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

Generuj serie dat — używając typu daty jako danych wejściowych

Dzięki rozdzielczości typu funkcji możemy również przekazać date wartości do generate_series() ponieważ istnieje ukryta rzutuj od date do timestamp jak również od date do timestamp . Byłoby niejednoznaczne, ale timestamptz jest "preferowany" wśród „Typy daty/godziny”. Szczegółowe wyjaśnienie:

  • Generowanie szeregów czasowych między dwiema datami w PostgreSQL

Dla czystej date czas lokalny 00:00 zakłada się w obsadzie. Pamiętaj, że bieżące ustawienie strefy czasowej ma bezpośredni wpływ na wynik, jeśli użyjesz date jako dane wejściowe, ponieważ oczywiście „2014-01-10 00:00” reprezentuje inny moment w Tokio niż w Nowym Jorku.

W jaki sposób Postgres decyduje, jakie typy są akceptowalne?

Postgres zasadniczo rozróżnia trzy typy rzutów:

Explicit casts .. podczas korzystania z CAST lub :: składnia.
Assignment cast .. niejawne rzutowanie, gdy wartość jest przypisana do kolumny docelowej.
Implicit cast .. niejawne rzutowania we wszystkich innych wyrażeniach.

Musi być ukryta rzutowanie zarejestrowane w systemie z typu wejściowego na typ oczekiwany, aby funkcja po cichu zaakceptowała (i przekonwertowała) wartość wejściową.

Aby zobaczyć, które rzuty są zdefiniowane do timestamptz , możesz wysłać zapytanie do tabeli katalogu pg_cast :

SELECT castsource::regtype, casttarget::regtype, castcontext
FROM   pg_cast
WHERE  casttarget = 'timestamptz'::regtype;

         castsource          |        casttarget        | castcontext
-----------------------------+--------------------------+-------------
 abstime                     | timestamp with time zone | i
 date                        | timestamp with time zone | i
 timestamp without time zone | timestamp with time zone | i
 timestamp with time zone    | timestamp with time zone | i

Wszystkie te obsady są ukryte . Zgodnie z dokumentacją dotyczącą castcontext :

Wskazuje, w jakich kontekstach można wywoływać rzutowanie. e oznacza tylko jako jawne rzutowanie (za pomocą CAST lub :: składnia). a oznacza niejawnie przypisanie do kolumny docelowej, a także jawnie. i oznacza domyślnie w wyrażeniach, jak również w innych przypadkach.

Pogrubiony nacisk na moje.




  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, przeciągnij i zamień

  2. Konfiguracja i użytkowanie pgmemcache

  3. Poprawka:„operator nie istnieje:liczba całkowita || liczba całkowita” w PostgreSQL

  4. [Wideo] Wprowadzenie do typów danych JSON w PostgreSQL

  5. PostgreSQL użyj wartości z poprzedniego wiersza, jeśli jej brakuje