PostgreSQL Datum/Uhrzeit-Funktionen und -Operatoren

Datum/Uhrzeit-Operatoren

Die unten stehende Tabelle zeigt das Verhalten grundlegender arithmetischer Operatoren (+, *, usw.):

OperatorBeispielErgebnis
+ date '2001-09-28' + integer '7'date '2001-10-05'
+ date '2001-09-28' + interval '1 hour'timestamp '2001-09-28 01:00:00'
+ date '2001-09-28' + time '03:00'timestamp '2001-09-28 03:00:00'
+ interval '1 day' + interval '1 hour'interval '1 day 01:00:00'
+ timestamp '2001-09-28 01:00' + interval '23 hours'timestamp '2001-09-29 00:00:00'
+ time '01:00' + interval '3 hours'time '04:00:00'
- - interval '23 hours'interval '-23:00:00'
- date '2001-10-01' - date '2001-09-28'integer '3' (Tage)
- date '2001-10-01' - integer '7'date '2001-09-24'
- date '2001-09-28' - interval '1 hour'timestamp '2001-09-27 23:00:00'
- time '05:00' - time '03:00'interval '02:00:00'
- time '05:00' - interval '2 hours'time '03:00:00'
- timestamp '2001-09-28 23:00' - interval '23 hours'timestamp '2001-09-28 00:00:00'
- interval '1 day' - interval '1 hour'interval '1 day -01:00:00'
- timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00'interval '1 day 15:00:00'
* 900 * interval '1 second'interval '00:15:00'
* 21 * interval '1 day'interval '21 days'
* double precision '3.5' * interval '1 hour'interval '03:30:00'
/ interval '1 hour' / double precision '1.5'interval '00:40:00'

Datums-/Zeitfunktionen

FunktionRückgabetypBeschreibungBeispielErgebnis
age(timestamp, timestamp) intervalSubtrahiert die Argumente, wodurch ein"symbolisches"Ergebnis entsteht, das Jahre und Monate verwendet, nicht nur Tageage(timestamp '2001-04-10', timestamp '1957-06-13')43 Jahre 9 Monate 27 Tage
age(timestamp)intervalfromcurrent_dateErgebnis der Subtraktion des Arguments (um Mitternacht)age(timestamp '1957-06-13')43 Jahre 8 Monate 3 Tage
clock_timestamp() timestamp with time zoneAktueller Zeitstempel der Echtzeituhr (ändert sich während der Ausführung der Anweisung)  
current_date dateAktuelles Datum;  
current_time time with time zoneUhrzeit;  
current_timestamp timestamp with time zoneZeitstempel zu Beginn der aktuellen Transaktion;  
date_part(text, timestamp) double precisionUnterfeld abrufen (entsprichtextract); date_part('hour', timestamp '2001-02-16 20:38:40')20
date_part(text, interval)double precisionUnterfeld abrufen (entsprichtextract); date_part('month', interval '2 years 3 months')3
date_trunc(text, timestamp) timestampAuf die angegebene Genauigkeit abschneiden;date_trunc('hour', timestamp '2001-02-16 20:38:40')2001-02-16 20:00:00
date_trunc(text, interval)intervalAuf die angegebene Genauigkeit abschneiden,date_trunc('hour', interval '2 days 3 hours 40 minutes')2 days 03:00:00
extract(Feld from timestamp) double precisionUnterfeld abrufen;extract(hour from timestamp '2001-02-16 20:38:40')20
extract(Feld from interval)double precisionUnterfeld abrufen;extract(month from interval '2 years 3 months')3
isfinite(date) booleschTesten, ob es ein endliches Datum ist (nicht +/- unendlich)isfinite(date '2001-02-16')wahr
isfinite(timestamp)booleschPrüfen, ob es sich um einen endlichen Zeitstempel handelt (nicht +/- Unendlich)isfinite(timestamp '2001-02-16 21:28:30')wahr
isfinite(interval)booleschPrüfen, ob es sich um ein endliches Zeitintervall handeltisfinite(interval '4 hours')wahr
justify_days(interval) intervalZeitintervall gemäß 30 Tagen pro Monat anpassenjustify_days(interval '35 days')1 mon 5 days
justify_hours(interval) intervalZeitintervall gemäß 24 Stunden pro Tag anpassenjustify_hours(interval '27 hours')1 day 03:00:00
justify_interval(interval) intervalVerwendungjustify_daysundjustify_hoursZeitintervall anpassen und dabei auch eine Vorzeichenanpassung durchführenjustify_interval(interval '1 mon -1 hour')29 days 23:00:00
localtime timeUhrzeit;  
localtimestamp timestampZeitstempel zu Beginn der aktuellen Transaktion;  
make_date(year int, month int, day int) dateEin Datum aus Jahr-, Monats- und Tagesfeldern erstellenmake_date(2013, 7, 15)2013-07-15
make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0) intervalEin Intervall aus Jahr-, Monats-, Wochen-, Tages-, Stunden-, Minuten- und Sekundenfeldern erstellenmake_interval(days := 10)10 days
make_time(hour int, min int, sec double precision) timeEine Uhrzeit aus Stunden-, Minuten- und Sekundenfeldern erstellenmake_time(8, 15, 23.5)08:15:23.5
make_timestamp(year int, month int, day int, hour int, min int, sec double precision) timestampEinen Zeitstempel aus Jahr-, Monats-, Tages-, Stunden-, Minuten- und Sekundenfeldern erstellenmake_timestamp(2013, 7, 15, 8, 15, 23.5)2013-07-15 08:15:23.5
make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ]) timestamp with time zoneEinen Zeitstempel mit Zeitzone aus Jahr-, Monats-, Tages-, Stunden-, Minuten- und Sekundenfeldern erstellen. Wenn nichttimezoneangegeben, wird die aktuelle Zeitzone verwendet.make_timestamptz(2013, 7, 15, 8, 15, 23.5)2013-07-15 08:15:23.5+01
now() timestamp with time zoneZeitstempel zu Beginn der aktuellen Transaktion;  
statement_timestamp() timestamp with time zoneAktueller Zeitstempel der Echtzeituhr;  
timeofday() textundclock_timestampDasselbe, aber das Ergebnis ist einetextZeichenkette;  
transaction_timestamp() timestamp with time zoneZeitstempel zu Beginn der aktuellen Transaktion;  
Andere Erweiterungen