sql >> Database >  >> RDS >> PostgreSQL

Genereer een reeks datums - gebruik het datumtype als invoer

Dankzij functietype resolutie we kunnen ook date doorgeven waarden naar generate_series() omdat er een impliciete . is casten vanaf date naar timestamp evenals vanaf date naar timestamptz . Zou dubbelzinnig zijn, maar timestamptz is "voorkeur" onder "Datum/tijd-types". Gedetailleerde uitleg:

  • Tijdreeksen genereren tussen twee datums in PostgreSQL

Voor een kale date de lokale tijd 00:00 wordt aangenomen in de cast. Houd er rekening mee dat de huidige tijdzone-instelling rechtstreeks van invloed is op het resultaat als u date gebruikt als input aangezien '2014-01-10 00:00' uiteraard een ander tijdstip in Tokio vertegenwoordigt dan in New York.

Hoe bepaalt Postgres welke soorten acceptabel zijn?

Postgres maakt in principe onderscheid tussen drie soorten casts:

Explicit casts .. bij gebruik van CAST of :: syntaxis.
Assignment cast .. impliciete cast wanneer een waarde wordt toegewezen aan een doelkolom.
Implicit cast .. impliciete casts in alle andere uitdrukkingen.

Er moet een impliciete . zijn cast geregistreerd in het systeem van het invoertype naar het verwachte type om een ​​functie stil een invoerwaarde te laten accepteren (en om te zetten).

Om te zien welke casts zijn gedefinieerd tot timestamptz , kunt u de catalogustabel pg_cast . opvragen :

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

Al deze casts zijn impliciet . Per documentatie op castcontext :

Geeft aan in welke context de cast kan worden aangeroepen. e betekent alleen als een expliciete cast (met behulp van CAST of :: syntaxis). a betekent impliciet toewijzen aan een doelkolom, evenals expliciet. i betekent impliciet in uitdrukkingen, evenals de andere gevallen.

Vetgedrukte nadruk van mij.




  1. INSERT INTO ... RETURNING - dubbelzinnige kolomverwijzing

  2. Spring Boot-applicatie loopt vast op Hikari-Pool-1 - Starten...

  3. Inspecteer de besturingsbron van alle besturingselementen in uw MS Access-project

  4. GreenDAO ondersteunt meerdere relaties tussen tabellen