MariaDB
 sql >> база данни >  >> RDS >> MariaDB

5 функции за извличане на номера на седмицата от дата в MariaDB

По-долу са 5 функции, които ви позволяват да върнете номера на седмицата от дата в MariaDB. Четири връщат само седмицата, а един връща и седмицата, и годината заедно.

WEEK() Функция

WEEK() функцията връща седмицата за дадена дата.

Пример:

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

Резултат:

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

WEEK() функцията приема незадължителен втори аргумент, за да посочи режима. Действителният резултат, който получавате от тази функция, ще зависи от използвания режим. Ако аргументът mode е пропуснат, стойността на default_week_format се използва системна променлива.

Вижте как WEEK() Работи в MariaDB за повече информация относно режимите и примерите за всеки.

EXTRACT() Функция

EXTRACT () функцията ви позволява да извлечете определена единица от датата. Следователно можете да го използвате, за да извлечете седмицата (както и други единици) от датата.

Пример:

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

Резултат:

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

DATE_FORMAT() Функция

DATE_FORMAT() функцията ви позволява да форматирате дата въз основа на низ за форматиране. Форматният низ указва как трябва да бъде форматирана датата.

Следователно можете да използвате тази функция, за да върнете седмицата (както и всяка друга единица) от датата. Има различни опции за връщане на номера на седмицата, в зависимост от кой ден започва седмицата и т.н.

Ето пример, който връща седмицата в различни форми:

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";

Резултат:

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

Ето описание на всеки от тези спецификатори на формат:

Определител на формата Описание
%U Номер на седмицата (00-53), когато първият ден от седмицата е неделя.
%u Номер на седмицата (00-53), когато първият ден от седмицата е понеделник.
%V Номер на седмицата (01-53), когато първият ден от седмицата е неделя. Използва се с %X .
%v Номер на седмицата (01-53), когато първият ден от седмицата е понеделник. Използва се с %x .

И ето описание на %X и %x както е посочено в горната таблица:

Определител на формата Описание
%X Година с 4 цифри, когато първият ден от седмицата е неделя. Използва се с %V .
%x Година с 4 цифри, когато първият ден от седмицата е понеделник. Използва се с %v .

Можем да комбинираме спецификатори на формат, за да върнем заедно годината и седмицата, ако е необходимо:

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

Резултат:

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

Имайте предвид, че номерът на седмицата не винаги отразява горните примери – зависи от действителната използвана дата.

Нека преместим датата с една година напред:

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";

Резултат:

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

Този път получаваме различен набор от резултати.

Ето какво се случва, когато преминем напред в годината:

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";

Резултат:

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

Както можете да видите, връщането на номера на седмицата не винаги е толкова ясно, колкото бихме искали.

Вижте MariaDB Format Strings за пълен списък с низове/спецификатори на формат, които могат да се използват с DATE_FORMAT() .

YEARWEEK() Функция

Възможно е да получите седмицата и година наведнъж. YEARWEEK() функцията връща годината и седмицата за дадена дата.

Пример:

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

Резултат:

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

Годината в резултата може да е различна от годината в аргумента за дата за първата и последната седмица от годината.

Ето какво се случва, ако продължим с една година напред:

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

Резултат:

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

Както при WEEK() функция, YEARWEEK() функцията приема незадължителен втори аргумент, за да посочи режима. Действителният резултат, който получавате от тази функция, ще зависи от използвания режим. Ако аргументът mode е пропуснат, стойността на default_week_format се използва системна променлива.

Вижте как YEARWEEK() Работи в MariaDB за повече информация относно режимите и примерите за всеки.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Главният мениджър за висока достъпност (MHA) се сри! Какво да правя сега?

  2. Как ELT() работи в MariaDB

  3. Как работи LEAST() в MariaDB

  4. Повишаване на производителността чрез използване на разделяне на четене и запис на трафик от базата данни с Moodle 3.9

  5. Сравнение на висока наличност на база данни - MySQL / MariaDB репликация срещу Oracle Data Guard