MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

5 funkcji do wyodrębnienia numeru tygodnia z daty w MariaDB

Poniżej znajduje się 5 funkcji, które umożliwiają zwrócenie numeru tygodnia z daty w MariaDB. Cztery zwracają tylko w tygodniu, a jeden zwraca łącznie tydzień i rok.

WEEK() Funkcja

WEEK() funkcja zwraca tydzień dla podanej daty.

Przykład:

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

Wynik:

+--------------------+
| WEEK('2023-07-25') |
+--------------------+
|                 30 |
+--------------------+

WEEK() funkcja przyjmuje opcjonalny drugi argument do określenia trybu. Rzeczywisty wynik uzyskany z tej funkcji będzie zależał od używanego trybu. Jeśli argument mode zostanie pominięty, wartość default_week_format używana jest zmienna systemowa.

Zobacz, jak WEEK() Działa w MariaDB, aby uzyskać więcej informacji o trybach i przykładach każdego z nich.

EXTRACT() Funkcja

EXTRACT () funkcja pozwala na wyodrębnienie określonej jednostki z daty. Dlatego możesz go użyć do wyodrębnienia tygodnia (jak również innych jednostek) z daty.

Przykład:

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

Wynik:

+---------------------------------+
| EXTRACT(WEEK FROM '2023-07-25') |
+---------------------------------+
|                              30 |
+---------------------------------+

DATE_FORMAT() Funkcja

DATE_FORMAT() funkcja umożliwia formatowanie daty na podstawie ciągu formatującego. Ciąg formatu określa sposób formatowania daty.

Możesz zatem użyć tej funkcji do zwrócenia tygodnia (jak również dowolnej innej jednostki) od daty. Istnieją różne opcje zwracania numeru tygodnia, w zależności od dnia, w którym zaczyna się tydzień itp.

Oto przykład, który zwraca tydzień w różnych formach:

SELECT 
    DATE_FORMAT('2023-01-01', '%U') AS "%U",
    DATE_FORMAT('2023-01-01', '%u') AS "%u",
    DATE_FORMAT('2023-01-01', '%V') AS "%V",
    DATE_FORMAT('2023-01-01', '%v') AS "%v";

Wynik:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 01   | 00   | 01   | 52   |
+------+------+------+------+

Oto opis każdego z tych specyfikatorów formatu:

Specyfikator formatu Opis
%U Numer tygodnia (00-53), kiedy pierwszym dniem tygodnia jest niedziela.
%u Numer tygodnia (00-53), kiedy pierwszym dniem tygodnia jest poniedziałek.
%V Numer tygodnia (01-53), gdy pierwszym dniem tygodnia jest niedziela. Używane z %X .
%v Numer tygodnia (01-53), gdy pierwszym dniem tygodnia jest poniedziałek. Używane z %x .

A oto opis %X i %x zgodnie z powyższą tabelą:

Specyfikator formatu Opis
%X Rok czterocyfrowy, gdy pierwszym dniem tygodnia jest niedziela. Używane z %V .
%x Rok czterocyfrowy, gdy pierwszym dniem tygodnia jest poniedziałek. Używane z %v .

W razie potrzeby możemy połączyć specyfikatory formatu, aby zwrócić razem rok i tydzień:

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

Wynik:

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

Zwróć uwagę, że numer tygodnia nie zawsze będzie odzwierciedlał powyższe przykłady – zależy to od rzeczywistej używanej daty.

Przesuńmy datę do przodu o rok:

SELECT 
    DATE_FORMAT('2024-01-01', '%U') AS "%U",
    DATE_FORMAT('2024-01-01', '%u') AS "%u",
    DATE_FORMAT('2024-01-01', '%V') AS "%V",
    DATE_FORMAT('2024-01-01', '%v') AS "%v";

Wynik:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 00   | 01   | 53   | 01   |
+------+------+------+------+

Tym razem otrzymujemy inny zestaw wyników.

Oto, co się dzieje, gdy przechodzimy do przodu w roku:

SELECT 
    DATE_FORMAT('2024-12-12', '%U') AS "%U",
    DATE_FORMAT('2024-12-12', '%u') AS "%u",
    DATE_FORMAT('2024-12-12', '%V') AS "%V",
    DATE_FORMAT('2024-12-12', '%v') AS "%v";

Wynik:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 49   | 50   | 49   | 50   |
+------+------+------+------+

Jak widać, zwracanie numeru tygodnia nie zawsze jest tak jasne, jak byśmy sobie tego życzyli.

Zobacz ciągi formatujące MariaDB, aby uzyskać pełną listę ciągów formatujących/specyfikatorów, których można używać z DATE_FORMAT() .

YEARWEEK() Funkcja

Można dostać tydzień i rok za jednym razem. YEARWEEK() funkcja zwraca rok i tydzień dla podanej daty.

Przykład:

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

Wynik:

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

Rok w wyniku może być inny niż rok w argumencie data dla pierwszego i ostatniego tygodnia roku.

Oto, co się stanie, jeśli przejdziemy do przodu o rok:

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

Wynik:

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

Podobnie jak w przypadku WEEK() funkcja YEARWEEK() funkcja przyjmuje opcjonalny drugi argument do określenia trybu. Rzeczywisty wynik uzyskany z tej funkcji będzie zależał od używanego trybu. Jeśli argument mode zostanie pominięty, wartość default_week_format używana jest zmienna systemowa.

Zobacz, jak YEARWEEK() Działa w MariaDB, aby uzyskać więcej informacji o trybach i przykładach każdego z nich.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie replikacji klastra MySQL Galera do tworzenia klastra rozproszonego geograficznie:część druga

  2. Jak uaktualnić MariaDB 10.4 do MariaDB 10.5?

  3. Nazwane polecenia MariaDB

  4. Jak działa ATAN() w MariaDB

  5. Funkcja AVG() w MariaDB