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

YEARWEEK() Примери – MySQL

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

Освен това имате възможност да укажете дали седмицата да започне в неделя или понеделник и дали седмицата трябва да бъде в диапазона от 0 до 53 или от 1 до 53.

Синтаксис

Можете да използвате една от следните две форми:

YEARWEEK(date)
YEARWEEK(date,mode)

Къде:

  • date е датата, от която искате да се върне номерът на годината и седмицата.
  • mode е число, което определя дали седмицата трябва да започне в неделя или понеделник и дали седмицата трябва да бъде в диапазона от 0 до 53 или от 1 до 53. Вижте таблицата по-долу за възможните стойности на режима.

Ако не е посочен режим, режимът е 0 .

Пример 1 – Основна употреба

Ето пример за демонстрация.

SELECT YEARWEEK('2021-01-25') As 'Result';

Резултат:

+--------+
| Result |
+--------+
| 202104 |
+--------+

Ето пример с различна дата.

SELECT YEARWEEK('1999-12-25') As 'Result';

Резултат:

+--------+
| Result |
+--------+
| 199951 |
+--------+

Пример 2 – Посочете режим

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

Все пак имате възможност да предоставите втори аргумент, за да укажете кой режим да използвате. Пример:

SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';

Резултат:

+--------+
| Mode 7 |
+--------+
| 201946 |
+--------+

Възможните стойности на режима са както следва.

Режим Първи ден от седмицата Обхват Седмица 1 е първата седмица...
0 Неделя 0-53 с неделя през тази година
1 Понеделник 0-53 с 4 или повече дни тази година
2 Неделя 1-53 с неделя през тази година
3 Понеделник 1-53 с 4 или повече дни тази година
4 Неделя 0-53 с 4 или повече дни тази година
5 Понеделник 0-53 с понеделник през тази година
6 Неделя 1-53 с 4 или повече дни тази година
7 Понеделник 1-53 с понеделник през тази година

Това са същите стойности, които могат да се използват с WEEK() функция.

Една разлика между тези две функции е, че WEEK() функцията извлича режима си по подразбиране от default_week_format системна променлива (стойността по подразбиране на тази променлива е 0 ). YEARWEEK() от друга страна, игнорира тази настройка и използва 0 като стойност по подразбиране (независимо от default_week_format настройка).

Пример 3 – Сравнение на режими

Ето едно бързо сравнение как можете да получите различни резултати в зависимост от използвания режим.

Следващите три примера използват същия код, но с три различни дати. Тези дати са последователни – настъпват на 5, 6 и 7 януари. Както можете да видите, резултатите могат да бъдат доста различни в зависимост от точната дата и използвания режим.

Дата 1

SET @date = '2019-01-05';
SELECT 
  YEARWEEK(@date, 0) AS 'Mode 0',
  YEARWEEK(@date, 1) AS 'Mode 1',
  YEARWEEK(@date, 2) AS 'Mode 2',
  YEARWEEK(@date, 3) AS 'Mode 3',
  YEARWEEK(@date, 4) AS 'Mode 4',
  YEARWEEK(@date, 5) AS 'Mode 5',
  YEARWEEK(@date, 6) AS 'Mode 6',
  YEARWEEK(@date, 7) AS 'Mode 7';

Резултат:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Дата 2

SET @date = '2019-01-06';
SELECT 
  YEARWEEK(@date, 0) AS 'Mode 0',
  YEARWEEK(@date, 1) AS 'Mode 1',
  YEARWEEK(@date, 2) AS 'Mode 2',
  YEARWEEK(@date, 3) AS 'Mode 3',
  YEARWEEK(@date, 4) AS 'Mode 4',
  YEARWEEK(@date, 5) AS 'Mode 5',
  YEARWEEK(@date, 6) AS 'Mode 6',
  YEARWEEK(@date, 7) AS 'Mode 7';

Резултат:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Дата 3

SET @date = '2019-01-07';
SELECT 
  YEARWEEK(@date, 0) AS 'Mode 0',
  YEARWEEK(@date, 1) AS 'Mode 1',
  YEARWEEK(@date, 2) AS 'Mode 2',
  YEARWEEK(@date, 3) AS 'Mode 3',
  YEARWEEK(@date, 4) AS 'Mode 4',
  YEARWEEK(@date, 5) AS 'Mode 5',
  YEARWEEK(@date, 6) AS 'Mode 6',
  YEARWEEK(@date, 7) AS 'Mode 7';

Резултат:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
| 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 |
+--------+--------+--------+--------+--------+--------+--------+--------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в MySQL 1170 (42000):колона BLOB/TEXT, използвана в спецификацията на ключа без дължина на ключа

  2. Може ли приложение за Android да се свърже директно с онлайн база данни на mysql

  3. MySQL SELECT WHERE дата и час съвпада с ден (и не непременно час)

  4. mysql след тригер за вмъкване, който актуализира колоната на друга таблица

  5. Зареждане на класа com.mysql.jdbc.Driver ... е отхвърлено съобщение