I PostgreSQL kan du använda extract()
funktion för att få dagen från ett datum.
Du kan också använda date_part()
att göra samma sak.
När du extraherar dagen från ett datum måste du ange vilken betydelse av ordet "dag" du menar. Till exempel "veckodag", "dag i månaden", "dag på året" osv.
Exempel 1:Veckodag
Här är ett exempel på hur du använder extract()
funktion för att extrahera veckodagen från ett datum.
Använder dow
returnerar veckodagen som söndag (0) till lördag (6).
SELECT extract(dow from date '2020-12-27') AS "Day of week", to_char(date '2020-12-27', 'Day') AS "Day Name";
Resultat:
Day of week | Day Name -------------+----------- 0 | Sunday
I det här exemplet returnerade jag också dagens namn, så att det inte finns någon förvirring om vilken dag som faktiskt returneras.
Jag kommer att använda samma datum för de återstående exemplen, så jag behöver inte skriva ut dagens namn i dessa exempel.
Exempel 2:ISO-veckodag
Använder isodow
returnerar veckodagen som måndag (1) till söndag (7).
SELECT extract( isodow from date '2020-12-27' ) AS "ISO Day of week";
Resultat:
ISO Day of week ----------------- 7
Anledningen till att jag använde söndag i dessa exempel är för att den framhäver skillnaden mellan isodow
och dow
.
Exempel 3:Dag i månaden
När du använder tidsstämpel eller datum värden, day
returnerar dagen i månaden (1 – 31).
SELECT extract( day from date '2020-12-27' ) AS "Day of month";
Resultat:
Day of month -------------- 27
När du använder ett intervall värde, day
fältet resulterar i antalet dagar som returneras.
SELECT extract( day from interval '32 weeks' ) AS "Number of days";
Resultat:
Number of days ---------------- 224
Exempel 4:Dag på året
Använder doy
returnerar dagen på året (1 – 365/366).
SELECT extract( doy from date '2020-12-27' ) AS "Day of year";
Resultat:
Day of year ------------- 362
Exempel 5:Funktionen date_part()
date_part()
funktionen kan användas i stället för extract()
fungera. Här är ett exempel.
SELECT date_part( 'doy', timestamp '2020-12-27' ) AS "Day of year";
Resultat:
Day of year ------------- 362