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

Jak funguje WEEKOFYEAR() v MariaDB

V MariaDB, WEEKOFYEAR() je vestavěná funkce data a času, která vrací kalendářní týden daného data jako číslo v rozsahu od 153 .

Je to ekvivalent použití WEEK() funguje v režimu 3, a proto je jeho výsledek v souladu s ISO 8601:1988.

Přijímá jeden argument; datum, ze kterého chcete extrahovat týden.

Syntaxe

Syntaxe vypadá takto:

WEEKOFYEAR(date) 

Kde date je výraz data, ze kterého se získá kalendářní týden.

Příklad

Zde je příklad:

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

Výsledek:

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

Je to ekvivalent provedení následujícího:

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

Výsledek:

+-----------------------+| TÝDEN('2030-01-01', 3) |+------------------------+| 1 |+-----------------------+

Hodnoty data a času

WEEKOFYEAR() funkce také pracuje s hodnotami datetime:

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

Výsledek:

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

Číselná data

Je také možné předávat data jako číslo, pokud to dává smysl jako datum.

Příklad

SELECT WEEKOFYEAR(20301125); 

Výsledek:

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

Nebo dokonce následující (který používá dvouciferný rok):

SELECT WEEKOFYEAR(301125); 

Výsledek:

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

Ale jako rande to musí dávat smysl. Když zvětším část dne na neplatný den, stane se toto:

SELECT WEEKOFYEAR(20301135); 

Výsledek:

+----------------------+| WEEKOFYEAR(20301135) |+-----------------------+| NULL |+----------------------+1 řádek v sadě, 1 upozornění (0,000 s)

Vrátil null s varováním.

Podívejme se na varování:

SHOW WARNINGS; 

Výsledek:

+---------+------+----------------------------- ---------+| Úroveň | Kód | Zpráva |+---------+------+------------------------------ --------+| Upozornění | 1292 | Nesprávná hodnota data a času:'20301135' |+---------+------+------------------------- --------------+

Další oddělovače

Pro datum můžete použít jiné oddělovače. MariaDB je docela shovívavá, pokud jde o oddělovače dat. Zde je několik platných příkladů:

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

Výsledek (při použití vertikálního výstupu):

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

Aktuální datum

Můžeme předat NOW() jako argument datetime pro použití aktuálního data:

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

Výsledek:

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

Neplatné argumenty

Při předání neplatného argumentu WEEKOFYEAR() vrátí null :

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

Výsledek:

+--------------------------+| WEEKOFYEAR('2030-65-78') |+--------------------------+| NULL |+--------------------------+1 řádek v sadě, 1 upozornění (0,000 s)

Ukažme varování:

SHOW WARNINGS; 

Výsledek:

+---------+------+----------------------------- -----------+| Úroveň | Kód | Zpráva |+---------+------+------------------------------ ----------+| Upozornění | 1292 | Nesprávná hodnota data a času:'2030-65-78' |+---------+------+--------------------- --------------------+

Chybí argument

Volání WEEKOFYEAR() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:

SELECT WEEKOFYEAR(); 

Výsledek:

CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'WEEKOFYEAR'

A další příklad:

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

Výsledek:

CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'WEEKOFYEAR'

  1. Obnovení databáze z nouzového režimu na serveru SQL

  2. Výpočet rozdílu mezi dvěma časovými razítky v Oracle v milisekundách

  3. Může pokojová knihovna zkopírovat db ze složky aktiv?

  4. Oracle UTL_SMTP:Příklad odeslání pošty s přílohou pomocí ověřování Oracle Wallet Authentication