PostgreSQL DATE_TRUNC()-Funktion
-
die Verwendung der Funktion
DATE_TRUNC()
in PostgreSQL -
"Millisekunde"
Genauigkeit in PostgresDATE_TRUNC()
-
"second"
Genauigkeit in PostgresDATE_TRUNC()
-
"minute"
Genauigkeit in PostgresDATE_TRUNC()
-
"Stunde"
Genauigkeit in PostgresDATE_TRUNC()
-
"day"
Genauigkeit in PostgresDATE_TRUNC()
-
Verwenden Sie
DATE_TRUNC()
mit Abfrage in Postgres
In diesem Artikel wird die Funktion DATE_TRUNC()
von Postgres mit Codeschnipseln besprochen.
die Verwendung der Funktion DATE_TRUNC()
in PostgreSQL
In Postgres ist es möglich, einen bestimmten Zeitstempel auf eine bestimmte Genauigkeitsstufe zu kürzen oder zu runden. Angenommen, Sie können es auf die nächste Minute, Stunde, Tag, Monat usw. kürzen.
In Postgres hat DATE_TRUNC()
die folgenden Intervalle.
Century
Day
Decade
Hour
Minute
Microsecond
Millisecond
Second
Month
Quarter
Week
Year
Hier ist der aktuelle Zeitstempel. Wir verwenden es für verschiedene Intervalle, um das Ergebnis zu sehen.
postgres=# SELECT NOW();
now
-------------------------------
2022-04-29 17:30:48.256668+06
(1 row)
"Millisekunde"
Genauigkeit in Postgres DATE_TRUNC()
Wir werden “Millisekunde” als Genauigkeit in DATE_TRUNC()
verwenden.
postgres=# SELECT DATE_TRUNC('millisecond', TIMESTAMP '2022-04-29 17:30:48.256668');
date_trunc
-------------------------
2022-04-29 17:30:48.256
(1 row)
Die Millisekunde war 256668
. Dann wurde es auf 256
gekürzt.
"second"
Genauigkeit in Postgres DATE_TRUNC()
Hier verwenden wir "Sekunde"
als Präzision im DATE_TRUNC()
.
postgres=# SELECT DATE_TRUNC('second', TIMESTAMP '2022-04-29 17:30:48.256668');
date_trunc
---------------------
2022-04-29 17:30:48
(1 row)
Sie können sehen, dass der Dezimalteil gekürzt wird, um den Wert aufzurunden.
"minute"
Genauigkeit in Postgres DATE_TRUNC()
Wir haben die “Minute” als Präzision im DATE_TRUNC()
verwendet.
postgres=# SELECT DATE_TRUNC('minute', TIMESTAMP '2022-04-29 17:30:48.256668');
date_trunc
---------------------
2022-04-29 17:30:00
(1 row)
Die Minute war 30:48
. Mit DATE_TRUNC(),
wurde daraus 30:00
.
"Stunde"
Genauigkeit in Postgres DATE_TRUNC()
Lassen Sie uns "Stunde"
als Genauigkeit in DATE_TRUNC()
verwenden.
postgres=# SELECT DATE_TRUNC('hour', TIMESTAMP '2022-04-29 17:30:48.256668');
date_trunc
---------------------
2022-04-29 17:00:00
(1 row)
Sie sehen den Unterschied zwischen 17:30:48.256668
und 17:00:00
.
"day"
Genauigkeit in Postgres DATE_TRUNC()
Verwenden Sie den Tag
als Präzision im DATE_TRUNC()
.
postgres=# SELECT DATE_TRUNC('day', TIMESTAMP '2022-04-29 17:30:48.256668');
date_trunc
---------------------
2022-04-29 00:00:00
(1 row)
Sie können sehen, dass die Uhrzeit 00:00:00
wurde. Es rundete den Tag ab.
Verwenden Sie DATE_TRUNC()
mit Abfrage in Postgres
Lassen Sie uns die folgenden MOCK_DATA
beim Hotel-Check-in haben.
postgres=# SELECT * from MOCK_DATA;
id | first_name | last_name | email | gender | check_in
-----+-------------+--------------+----------------------------------+-------------+------------
1 | Agustin | Bawdon | abawdon0@umn.edu | Male | 2016-05-11
2 | Maximilian | Ber | mber1@artisteer.com | Male | 2013-03-08
3 | Randy | Kline | rkline2@pcworld.com | Bigender | 2019-01-01
4 | Bonnibelle | Mazillius | bmazillius3@is.gd | Female | 2011-07-06
5 | Rolland | Hollidge | rhollidge4@seesaa.net | Male | 2009-04-30
6 | Sandro | Hubbert | shubbert5@nature.com | Male | 2019-11-26
7 | Collin | La Torre | clatorre6@google.de | Male | 2016-02-12
8 | Joleen | Jerram | jjerram7@instagram.com | Female | 2015-05-23
-- More --
Wir wollen jedes Jahr die Check-Ins zählen.
SELECT
date_trunc('year', check_in) year_no,
COUNT(id) Customers
FROM
MOCK_DATA
GROUP BY
year_no
ORDER BY
year_no;
Ausgang:
year_no | customers
------------------------+-----------
2008-01-01 00:00:00+06 | 17
2009-01-01 00:00:00+06 | 20
2010-01-01 00:00:00+06 | 15
2011-01-01 00:00:00+06 | 20
2012-01-01 00:00:00+06 | 19
2013-01-01 00:00:00+06 | 18
2014-01-01 00:00:00+06 | 13
2015-01-01 00:00:00+06 | 24
2016-01-01 00:00:00+06 | 18
2017-01-01 00:00:00+06 | 13
2018-01-01 00:00:00+06 | 23
2019-01-01 00:00:00+06 | 17
2020-01-01 00:00:00+06 | 16
2021-01-01 00:00:00+06 | 12
2022-01-01 00:00:00+06 | 5
(15 rows)
Um mehr über DATE_TRUNC()
zu erfahren, hier ist die offizielle Dokumentation. Sie können mockaroo verwenden, um die Beispieldatenbank zu generieren.