Volgens de PostgreSQL-documentatie zijn er twee functies genaamd to_timestamp()
:
- Men converteert het Unix-tijdperk naar een tijdstempel. Het Unix-tijdperk is het aantal seconden sinds 1970-01-01 00:00:00+00.
- De andere converteert een string naar een tijdstempel.
Meer specifiek converteert elke functie de waarde naar een tijdstempel met tijdzone waarde.
Hoewel de Postgres-documentatie ze presenteert als twee afzonderlijke to_timestamp()
functies, presenteer ik ze alsof ze één functie zijn die één argument of twee accepteert.
Syntaxis
U kunt to_timestamp()
. gebruiken op de volgende manieren:
to_timestamp(double precision)
to_timestamp(text, text)
Met behulp van de eerste syntaxis wordt het argument geleverd als een dubbele precisie waarde, en het is de Epoch-waarde, met dubbele precisie die u wilt converteren naar een tijdstempel.
Bij gebruik van de tweede syntaxis is het eerste argument de datum en het tweede argument de opmaakreeks.
Converteer het Unix-tijdperk
Hier is een eenvoudig voorbeeld om te demonstreren hoe u de Epoch kunt converteren naar een tijdstempel.
SELECT to_timestamp(1658792421);
Resultaat:
2022-07-26 09:40:21+10
In mijn geval is de tijdzone-offset +10 en dat is dus wat wordt geretourneerd.
Fractionele seconden
Hier is een voorbeeld met fractionele seconden.
SELECT to_timestamp(1658792421.123456);
Resultaat:
2022-07-26 09:40:21.123456+10
Opmaak
Hier is een voorbeeld van het gebruik van de tweede syntaxis om een datumwaarde op te maken.
SELECT to_timestamp('21 Oct 2022', 'DD Mon YYYY');
Resultaat:
2022-10-21 00:00:00+10
Het tweede argument wordt gegeven om aan te geven hoe het eerste argument is opgemaakt.
Hier is een ander formaat om dit punt verder te illustreren.
SELECT to_timestamp('21/10/2022', 'DD/MM/YYYY');
Resultaat:
2022-10-21 00:00:00+10
Als het formaat van het tweede argument niet overeenkomt met het formaat van het eerste argument, kan er een fout optreden.
Bijvoorbeeld:
SELECT to_timestamp('21 October 2022', 'DD Mon YYYY');
Resultaat:
ERROR: invalid value "ober" for "YYYY" DETAIL: Value must be an integer.
De format string (tweede argument) kan elk sjabloonpatroon zijn met een optionele modifier.
Hier is een volledige lijst met sjabloonpatronen en modifiers die u met deze functie kunt gebruiken.
Het retourtype
Zoals vermeld, is het retourtype tijdstempel met tijdzone . We kunnen dit verifiëren met de pg_typeof()
functie.
SELECT pg_typeof(to_timestamp(1658792421.123456));
Resultaat:
timestamp with time zone
Datumdelen extraheren
U kunt verschillende methoden gebruiken om datumdelen uit de tijdstempelwaarde te extraheren.
U kunt bijvoorbeeld de extract()
. gebruiken functie.
SELECT extract('month' from to_timestamp(1658792421));
Resultaat:
7
En je kunt de to_char()
. gebruiken functie als u iets moet doen zoals de naam van de maand weergeven in plaats van het maandnummer.
SELECT to_char(to_timestamp(1658792421), 'Month');
Resultaat:
July
En hier gebruikt het de opmaaksyntaxis.
SELECT to_char(to_timestamp('1st Oct 2022', 'FMDDth Mon YYYY'), 'Month');
Resultaat:
October
Als je alleen het maandnummer hebt, kun je het volgende voorbeeld gebruiken om het maandnummer om te zetten in de maandnaam.
SELECT to_char(to_timestamp(3::text, 'MM'), 'Month');
Resultaat:
March
En vice versa (maandnaam omzetten in maandnummer).
In het volgende voorbeeld extraheer ik het maandnummer met behulp van date_part()
als alternatief voor extract()
.
SELECT date_part('month', (to_timestamp('Mar 2022', 'Mon')));
Resultaat:
3