sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man konverterar en Unix-tidsstämpel till ett datum-/tidsvärde i PostgreSQL

I PostgreSQL kan vi använda to_timestamp() funktion för att konvertera ett Unix-tidsstämpelvärde till ett datum-/tidsvärde.

Unix-tidsstämpeln (även känd som Unix Epoch-tid, Unix-tid eller POSIX-tid) är antalet sekunder som har förflutit sedan 00:00:00 torsdagen den 1 januari 1970, Coordinated Universal Time (UTC).

Exempel

Här är ett enkelt exempel att visa:

SELECT to_timestamp(1912995045);

Resultat:

2030-08-15 03:30:45+00

I det här fallet passerade jag ett specifikt Unix-tidsstämpelvärde.

Här är ett annat exempel som ytterligare visar hur resultatet återspeglar Unix-tidsstämpelvärdet:

SELECT 
    now() AS "Current Date/Time",
    extract(epoch from now()) AS "Unix Timestamp",
    to_timestamp(extract(epoch from now())) AS "And back again...";

Resultat:

       Current Date/Time       |  Unix Timestamp   |       And back again...       
-------------------------------+-------------------+-------------------------------
 2022-04-19 19:25:27.068737+00 | 1650396327.068737 | 2022-04-19 19:25:27.068737+00

I det här exemplet använde vi now() för att mata ut aktuellt datum och tid. Vi använde sedan extract() för att få Unix-tidsstämpeln från det datum- och tidsvärdet. Slutligen använde vi to_timestamp() för att konvertera det tillbaka till det ursprungliga datum- och tidsvärdet.

Konvertera till datum

Vi kan även casta resultatet som ett date värde för att eliminera tidsdelen:

SELECT to_timestamp(1912995045)::date;

Resultat:

2030-08-15

  1. SQL Server VÄLJ SISTA N rader

  2. SQL FLOAT:3 poäng som hjälper dig att undvika konstiga matematiska fel

  3. Rails, MySQL och Snow Leopard

  4. Hur man skapar en tabell i SQL Server med hjälp av en fråga