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

Jak WEEKOFYEAR() działa w MariaDB

W MariaDB, WEEKOFYEAR() to wbudowana funkcja daty i czasu, która zwraca tydzień kalendarzowy podanej daty jako liczbę z zakresu od 1 do 53 .

Jest to odpowiednik użycia WEEK() działa w trybie 3, a zatem jego wynik jest zgodny z normą ISO 8601:1988.

Przyjmuje jeden argument; data, z której chcesz wyodrębnić tydzień.

Składnia

Składnia wygląda tak:

WEEKOFYEAR(date)

Gdzie date jest wyrażeniem daty, z którego ma pochodzić tydzień kalendarzowy.

Przykład

Oto przykład:

SELECT WEEKOFYEAR('2030-01-01');

Wynik:

+--------------------------+
| WEEKOFYEAR('2030-01-01') |
+--------------------------+
|                        1 |
+--------------------------+

Jest to równoznaczne z wykonaniem następujących czynności:

SELECT WEEK('2030-01-01', 3);

Wynik:

+-----------------------+
| WEEK('2030-01-01', 3) |
+-----------------------+
|                     1 |
+-----------------------+

Wartości daty i godziny

WEEKOFYEAR() funkcja działa również z wartościami daty/godziny:

SELECT WEEKOFYEAR('2030-08-01 10:30:45');

Wynik:

+-----------------------------------+
| WEEKOFYEAR('2030-08-01 10:30:45') |
+-----------------------------------+
|                                31 |
+-----------------------------------+

Daty numeryczne

Możliwe jest również przekazywanie dat jako liczby, o ile ma to sens jako data.

Przykład

SELECT WEEKOFYEAR(20301125);

Wynik:

+----------------------+
| WEEKOFYEAR(20301125) |
+----------------------+
|                   48 |
+----------------------+

Lub nawet następujący (który używa dwucyfrowego roku):

SELECT WEEKOFYEAR(301125);

Wynik:

+--------------------+
| WEEKOFYEAR(301125) |
+--------------------+
|                 48 |
+--------------------+

Ale to musi mieć sens jako randka. Oto, co się stanie, jeśli zwiększę część dnia do nieprawidłowego dnia:

SELECT WEEKOFYEAR(20301135);

Wynik:

+----------------------+
| WEEKOFYEAR(20301135) |
+----------------------+
|                 NULL |
+----------------------+
1 row in set, 1 warning (0.000 sec)

Zwrócił null z ostrzeżeniem.

Spójrzmy na ostrzeżenie:

SHOW WARNINGS;

Wynik:

+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: '20301135' |
+---------+------+--------------------------------------+

Inne ograniczniki

Możesz użyć innych ograniczników daty. MariaDB jest dość wyrozumiała, jeśli chodzi o ograniczniki dat. Oto kilka poprawnych przykładów:

SELECT 
    WEEKOFYEAR('2030/06/25'),
    WEEKOFYEAR('2030,06,25'),
    WEEKOFYEAR('2030:06:25'),
    WEEKOFYEAR('2030;06!25');

Wynik (przy użyciu wyjścia pionowego):

WEEKOFYEAR('2030/06/25'): 26
WEEKOFYEAR('2030,06,25'): 26
WEEKOFYEAR('2030:06:25'): 26
WEEKOFYEAR('2030;06!25'): 26

Aktualna data

Możemy przekazać NOW() jako argument datetime, aby użyć bieżącej daty:

SELECT 
    NOW(),
    WEEKOFYEAR(NOW());

Wynik:

+---------------------+-------------------+
| NOW()               | WEEKOFYEAR(NOW()) |
+---------------------+-------------------+
| 2021-05-17 09:42:13 |                20 |
+---------------------+-------------------+

Nieprawidłowe argumenty

Po przekazaniu nieprawidłowego argumentu WEEKOFYEAR() zwraca null :

SELECT WEEKOFYEAR('2030-65-78');

Wynik:

+--------------------------+
| WEEKOFYEAR('2030-65-78') |
+--------------------------+
|                     NULL |
+--------------------------+
1 row in set, 1 warning (0.000 sec)

Pokażmy ostrzeżenie:

SHOW WARNINGS;

Wynik:

+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Incorrect datetime value: '2030-65-78' |
+---------+------+----------------------------------------+

Brakujący argument

Wywołanie WEEKOFYEAR() z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:

SELECT WEEKOFYEAR();

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'

I kolejny przykład:

SELECT WEEKOFYEAR('2030-12-10', 1);

Wynik:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak SUBTIME() działa w MariaDB

  2. Jak odjąć minuty od wartości daty i godziny w MariaDB?

  3. MariaDB Backup i PostgreSQL w chmurze — ClusterControl w wersji 1.6.1

  4. MariaDB JSON_VALUE() Objaśnienie

  5. Korzystanie z MariaDB Flashback na serwerze MySQL