sql >> Databáze >  >> RDS >> PostgreSQL

Získejte den z data v PostgreSQL

V PostgreSQL můžete použít extract() funkce pro získání dne z data.

Můžete také použít date_part() udělat to samé.

Při extrakci dne z data musíte určit, jaký význam slova „den“ máte na mysli. Například „den v týdnu“, „den v měsíci“, „den v roce“ atd.

Příklad 1:Den v týdnu

Zde je příklad použití extract() funkce pro extrahování dne v týdnu z data.

Pomocí dow vrátí den v týdnu od neděle (0) do soboty (6).

SELECT 
  extract(dow from date '2020-12-27') AS "Day of week",
  to_char(date '2020-12-27', 'Day') AS "Day Name";

Výsledek:

 Day of week | Day Name  
-------------+-----------
           0 | Sunday   

V tomto příkladu jsem také vrátil název dne, aby nedošlo k záměně ohledně toho, který den se skutečně vrací.

Pro zbývající příklady použiji stejné datum, takže v těchto příkladech nemusím tisknout název dne.

Příklad 2:ISO den v týdnu

Pomocí isodow vrátí den v týdnu od pondělí (1) do neděle (7).

SELECT extract(
    isodow from date '2020-12-27'
    ) AS "ISO Day of week";

Výsledek:

 ISO Day of week 
-----------------
               7

Důvod, proč jsem v těchto příkladech použil neděli, je ten, že zdůrazňuje rozdíl mezi isodow a dow .

Příklad 3:Den v měsíci

Při použití časového razítka nebo datum hodnoty, day vrátí den v měsíci (1 – 31).

SELECT extract(
    day from date '2020-12-27'
    ) AS "Day of month";

Výsledek:

 Day of month 
--------------
           27

Při použití intervalu hodnotu, day pole má za následek počet vrácených dní.

SELECT extract(
    day from interval '32 weeks'
    ) AS "Number of days";

Výsledek:

 Number of days 
----------------
            224

Příklad 4:Den v roce

Pomocí doy vrátí den v roce (1 – 365/366).

SELECT extract(
    doy from date '2020-12-27'
    ) AS "Day of year";

Výsledek:

 Day of year 
-------------
         362

Příklad 5:Funkce date_part()

date_part() funkci lze použít místo extract() funkce. Zde je příklad.

SELECT date_part(
    'doy', timestamp '2020-12-27'
    ) AS "Day of year";

Výsledek:

 Day of year 
-------------
         362

  1. Práce kolem zmeškaných optimalizací

  2. Hvězdné schéma

  3. Jak získat maximální hodnotu celého čísla typu sloupce uloženého jako text typu v tabulce sqlite

  4. 4 způsoby, jak najít řádky, které obsahují malá písmena v MariaDB