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

Jak získat jméno krátkého dne z data v MariaDB

V MariaDB můžete použít DATE_FORMAT() funkce pro vrácení různých částí data z data. Jedna z věcí, kterou můžete vrátit, je název krátkého dne. Například Tue nebo Wed (místo Tuesday nebo Wednesday ).

Specifikátor formátu „Short Day Name“ (%a )

Klíč k vrácení krátkého názvu dne při použití DATE_FORMAT() funkcí je použít příslušný specifikátor formátu.

V MariaDB je specifikátor formátu pro název krátkého dne:%a

Příklad

Zde je příklad k demonstraci:

SELECT DATE_FORMAT('2023-07-25', '%a');

Výsledek:

+---------------------------------+
| DATE_FORMAT('2023-07-25', '%a') |
+---------------------------------+
| Tue                             |
+---------------------------------+

Zde je další příklad, který prochází různými dny v týdnu:

SELECT 
    DATE_FORMAT('2023-07-24', '%a') AS "1",
    DATE_FORMAT('2023-07-25', '%a') AS "2",
    DATE_FORMAT('2023-07-26', '%a') AS "3",
    DATE_FORMAT('2023-07-27', '%a') AS "4",
    DATE_FORMAT('2023-07-28', '%a') AS "5",
    DATE_FORMAT('2023-07-29', '%a') AS "6",
    DATE_FORMAT('2023-07-30', '%a') AS "7";

Výsledek:

+------+------+------+------+------+------+------+
| 1    | 2    | 3    | 4    | 5    | 6    | 7    |
+------+------+------+------+------+------+------+
| Mon  | Tue  | Wed  | Thu  | Fri  | Sat  | Sun  |
+------+------+------+------+------+------+------+

Můžete vrátit i jiné jednotky data a času, ale tento článek je konkrétně o vrácení názvu krátkého dne. Viz MariaDB Format Strings pro seznam specifikátorů formátu, které lze použít s DATE_FORMAT() .

Další přístupy

Existují další způsoby, jak získat název krátkého dne z data, které zahrnují odříznutí první části dne.

To však může být náchylnější k chybám než výše uvedená metoda (a navíc je komplikovanější). Při použití této metody můžete získat neočekávané výsledky, zejména při práci s různými jazyky.

Zde je několik příkladů, které demonstrují, co tím myslím.

Místo použití %a specifikátor formátu, jako jsme to udělali v předchozím příkladu, mohli bychom použít %W specifikátor formátu, který vrátí celý název dne, a poté vrátí výsledek zkrátí pomocí funkce jako LEFT() .

Příklad:

SELECT 
    DATE_FORMAT('2023-07-25', '%W') AS Full,
    LEFT(DATE_FORMAT('2023-07-25', '%W'), 3) AS Short;

Výsledek:

+---------+-------+
| Full    | Short |
+---------+-------+
| Tuesday | Tue   |
+---------+-------+

Alternativně bychom mohli použít funkci jako CAST() převést na datový typ s pouze třemi znaky, jako je tento:

SELECT 
    DATE_FORMAT('2023-07-25', '%W') AS Full,
    CAST(DATE_FORMAT('2023-07-25', '%W') AS CHAR(3)) AS Short;

Výsledek:

+---------+-------+
| Full    | Short |
+---------+-------+
| Tuesday | Tue   |
+---------+-------+

To funguje dobře při práci s anglickým jazykem (a možná i některými dalšími jazyky). Ale podívejme se, co se stane, když přepneme na jiný jazyk – řekněme japonštinu:

SELECT 
    DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
    LEFT(DATE_FORMAT('2023-07-25', '%W', 'ja_JP'), 3) AS Short;

Výsledek:

+-----------+-----------+
| Full      | Short     |
+-----------+-----------+
| 火曜日     | 火曜日     |
+-----------+-----------+

V tomto případě není rozdíl.

Naproti tomu zde je to, co se stane, když použijeme %a specifikátor formátu pro návrat krátkého názvu dne:

SELECT 
    DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
    DATE_FORMAT('2023-07-25', '%a', 'ja_JP') AS Short;

Výsledek:

+-----------+-------+
| Full      | Short |
+-----------+-------+
| 火曜日     | 火    |
+-----------+-------+

Takže bych doporučil použít %a specifikátor formátu, kdykoli je to možné.


  1. Hledání duplicitních hodnot v MySQL

  2. Protokolování auditu pro PostgreSQL

  3. Autonomní transakce v PostgreSQL 9.1

  4. Jak najít průměr číselného sloupce v SQL