sql >> Databáze >  >> RDS >> MariaDB

4 Funkce pro vrácení roku z data v MariaDB

Níže jsou uvedeny 4 funkce, které vám umožňují vrátit rok od data v MariaDB. Tři funkce vrátí pouze rok a jedna vrátí rok i týden.

YEAR() Funkce

YEAR() funkce vrací rok pro dané datum. Výsledek je v rozsahu 1000 na 9999 , nebo 0 pro data, která mají nulový rok (například 0000-00-00 ).

Příklad:

SELECT YEAR('2023-07-25');

Výsledek:

+--------------------+
| YEAR('2023-07-25') |
+--------------------+
|               2023 |
+--------------------+

EXTRACT() Funkce

EXTRACT () Funkce umožňuje extrahovat zadanou jednotku z data. Proto jej můžete použít k extrahování roku (stejně jako jiných jednotek) z data.

Příklad:

SELECT EXTRACT(YEAR FROM '2023-07-25');

Výsledek:

+---------------------------------+
| EXTRACT(YEAR FROM '2023-07-25') |
+---------------------------------+
|                            2023 |
+---------------------------------+

DATE_FORMAT() Funkce

DATE_FORMAT() Funkce umožňuje formátovat datum na základě formátovacího řetězce. Formátovací řetězec určuje, jak má být datum formátováno.

Pomocí této funkce tedy můžete vrátit rok (stejně jako jakoukoli jinou jednotku) z data. Existují různé specifikátory formátu pro vrácení roku v různých formátech. Například čtyřmístný rok, dvoumístný rok atd.

Zde je příklad, který vrací rok v různých formách:

SELECT 
    DATE_FORMAT('2023-01-01', '%X') AS "%X",
    DATE_FORMAT('2023-01-01', '%x') AS "%x",
    DATE_FORMAT('2023-01-01', '%Y') AS "%Y",
    DATE_FORMAT('2023-01-01', '%y') AS "%y";

Výsledek:

+------+------+------+------+
| %X   | %x   | %Y   | %y   |
+------+------+------+------+
| 2023 | 2022 | 2023 | 23   |
+------+------+------+------+

Všimněte si, že %x vrátilo jiné číslo roku než ostatní.

Zde je popis každého z těchto specifikátorů formátu, který vysvětluje proč %x vrátil jiný výsledek:

Specifikátor formátu Popis
%X Rok se 4 číslicemi, když prvním dnem v týdnu je neděle. Používá se s %V .
%x Rok se 4 číslicemi, když prvním dnem v týdnu je pondělí. Používá se s %v .
%Y Rok se 4 číslicemi.
%y Rok se 2 číslicemi.

A zde je popis %V a %v jak je uvedeno ve výše uvedené tabulce:

Specifikátor formátu Popis
%V Číslo týdne (01-53), když prvním dnem v týdnu je neděle. Používá se s %X .
%v Číslo týdne (01-53), pokud je prvním dnem v týdnu pondělí. Používá se s %x .

Mohli bychom tedy přidat tyto specifikátory formátu do výše uvedeného příkladu a získat následující:

SELECT 
    DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
    DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";

Výsledek:

+----------+----------+
| %X, %V   | %x, %v   |
+----------+----------+
| 2023, 01 | 2022, 52 |
+----------+----------+

Všimněte si, že %x nebude vždy vracet jiný rok – záleží na skutečném použitém datu. Někdy je to %X který se vrátí do jiného roku než ostatní.

Posuňme datum o rok dopředu:

SELECT 
    DATE_FORMAT('2024-01-01', '%X') AS "%X",
    DATE_FORMAT('2024-01-01', '%x') AS "%x",
    DATE_FORMAT('2024-01-01', '%Y') AS "%Y",
    DATE_FORMAT('2024-01-01', '%y') AS "%y";

Výsledek:

+------+------+------+------+
| %X   | %x   | %Y   | %y   |
+------+------+------+------+
| 2023 | 2024 | 2024 | 24   |
+------+------+------+------+

Tentokrát je to %X to je zvláštní. Jak je vysvětleno v tabulce výše, záleží na tom, zda je prvním dnem v týdnu neděle nebo pondělí.

Pokud se přesuneme dále do roku, všechny specifikátory formátu se samozřejmě vrátí ve stejný rok:

SELECT 
    DATE_FORMAT('2024-12-12', '%X') AS "%X",
    DATE_FORMAT('2024-12-12', '%x') AS "%x",
    DATE_FORMAT('2024-12-12', '%Y') AS "%Y",
    DATE_FORMAT('2024-12-12', '%y') AS "%y";

Výsledek:

+------+------+------+------+
| %X   | %x   | %Y   | %y   |
+------+------+------+------+
| 2024 | 2024 | 2024 | 24   |
+------+------+------+------+

Úplný seznam formátovacích řetězců/specifikátorů naleznete v části MariaDB Format Strings.

YEARWEEK() Funkce

YEARWEEK() funkce vrací rok a týden pro dané datum.

Příklad:

SELECT YEARWEEK('2023-01-01');

Výsledek:

+------------------------+
| YEARWEEK('2023-01-01') |
+------------------------+
|                 202301 |
+------------------------+

Rok ve výsledku se může lišit od roku v argumentu data pro první a poslední týden v roce.

Když se posuneme o rok dopředu:

SELECT YEARWEEK('2024-01-01');

Výsledek:

+------------------------+
| YEARWEEK('2024-01-01') |
+------------------------+
|                 202353 |
+------------------------+

YEARWEEK() funkce přijímá volitelný druhý argument k určení režimu. Skutečný výsledek, který touto funkcí získáte, bude záviset na používaném režimu. Pokud je vynechán argument mode, hodnota default_week_format je použita systémová proměnná.

Viz Jak YEARWEEK() Funguje v MariaDB, kde najdete další informace o režimech a příkladech každého z nich.


  1. 4 způsoby, jak vypsat všechny tabulky v databázi MySQL

  2. Tipy pro lepší návrh databáze

  3. Použití DBCC CLONEDATABASE a Query Store pro testování

  4. Spusťte MySQLDump bez zamykání tabulek