sql >> Database teknologi >  >> RDS >> PostgreSQL

How to_timestamp() virker i PostgreSQL

Ifølge PostgreSQL-dokumentationen er der to funktioner kaldet to_timestamp() :

  • Man konverterer Unix-epoken til et tidsstempel. Unix-epoken er antallet af sekunder siden 1970-01-01 00:00:00+00.
  • Den anden konverterer en streng til et tidsstempel.

Mere specifikt konverterer hver funktion værdien til et tidsstempel med tidszone værdi.

Selvom Postgres-dokumentationen præsenterer dem som to separate to_timestamp() funktioner, præsenterer jeg dem, som om de er én funktion, der accepterer enten et argument eller to.

Syntaks

Du kan bruge to_timestamp() på følgende måder:

to_timestamp(double precision)
to_timestamp(text, text)

Ved at bruge den første syntaks leveres argumentet som en dobbelt præcision værdi, og det er Epoch-værdien, i dobbelt præcision, du ønsker konverteret til et tidsstempel.

Ved at bruge den anden syntaks er det første argument datoen, og det andet argument er formatstrengen.

Konverter Unix-epoken

Her er et grundlæggende eksempel til at demonstrere, hvordan man konverterer Epoch til et tidsstempel.

SELECT to_timestamp(1658792421);

Resultat:

2022-07-26 09:40:21+10

I mit tilfælde er tidszoneforskydningen +10, og det er det, der returneres.

Brøkdele af sekunder

Her er et eksempel med brøkdele af sekunder.

SELECT to_timestamp(1658792421.123456);

Resultat:

2022-07-26 09:40:21.123456+10

Formattering

Her er et eksempel på brug af den anden syntaks til at formatere en datoværdi.

SELECT to_timestamp('21 Oct 2022', 'DD Mon YYYY');

Resultat:

2022-10-21 00:00:00+10

Det andet argument er angivet, hvordan det første argument er formateret.

Her er et andet format for yderligere at illustrere dette punkt.

SELECT to_timestamp('21/10/2022', 'DD/MM/YYYY');

Resultat:

2022-10-21 00:00:00+10

Hvis formatet på det andet argument ikke matcher formatet på det første argument, kan du ende med en fejl.

For eksempel:

SELECT to_timestamp('21 October 2022', 'DD Mon YYYY');

Resultat:

ERROR: invalid value "ober" for "YYYY"
DETAIL: Value must be an integer.

Formatstrengen (andet argument) kan være et hvilket som helst skabelonmønster med en valgfri modifikator.

Her er en komplet liste over skabelonmønstre og modifikatorer, som du kan bruge med denne funktion.

Returtypen

Som nævnt er returtypen tidsstempel med tidszone . Vi kan bekræfte dette med pg_typeof() funktion.

SELECT pg_typeof(to_timestamp(1658792421.123456));

Resultat:

timestamp with time zone

Udtrækning af datodele

Du kan bruge forskellige metoder til at udtrække datodele fra tidsstemplets værdi.

For eksempel kan du bruge extract() funktion.

SELECT extract('month' from to_timestamp(1658792421));

Resultat:

7

Og du kan bruge to_char() funktion, hvis du har brug for at gøre noget som at vise månedens navn i stedet for månedsnummeret.

SELECT to_char(to_timestamp(1658792421), 'Month');

Resultat:

July

Og her bruger den formateringssyntaksen.

SELECT to_char(to_timestamp('1st Oct 2022', 'FMDDth Mon YYYY'), 'Month');

Resultat:

October

Hvis du kun har månedsnummeret, kan du bruge følgende eksempel til at konvertere månedsnummeret til månedsnavnet.

SELECT to_char(to_timestamp(3::text, 'MM'), 'Month');

Resultat:

March

Og omvendt (konverter månedsnavn til månedsnummer).

I det følgende eksempel udtrækker jeg månedsnummeret ved at bruge date_part() som et alternativ til extract() .

SELECT date_part('month', (to_timestamp('Mar 2022', 'Mon')));

Resultat:

3

  1. Jeg kan ikke finde my.cnf på min Windows-computer

  2. Sådan konfigureres MariaDB (Master-Slave) replikering i CentOS/RHEL 7 og Debian 8/9

  3. SQL Server-markørtyper - Hvad er statiske markører i SQL Server | SQL Server Tutorial / TSQL Tutorial

  4. Skal erklære variablen @myvariable fejl med ADO-parameteriseret forespørgsel