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

Jak YEAR() funguje v MariaDB

V MariaDB YEAR() je vestavěná funkce data a času, která vrací rok z daného výrazu data.

Přijímá jeden argument, což je datum, ze kterého chcete extrahovat rok.

Vrátí rok jako číslo v rozsahu 1000 na 9999 . Pro nulová data (např. 0000-00-00 ), výsledkem je 0 .

Syntaxe

Syntaxe vypadá takto:

YEAR(date) 

Kde date je výraz data, ze kterého se získá rok.

Příklad

Zde je příklad:

SELECT YEAR('2030-08-01'); 

Výsledek:

+---------------------+| ROK('2030-08-01') |+---------------------+| 2030 |+--------------------+

Hodnoty data a času

Funguje také s hodnotami datetime:

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

Výsledek:

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

Nula dat

Výsledkem nulových dat je 0 .

Příklad:

SELECT YEAR('0000-00-00'); 

Výsledek:

+---------------------+| ROK('0000-00-00') |+--------------------+| 0 |+--------------------+

Číselná data

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

Příklad

SELECT YEAR(20301125); 

Výsledek:

+-----------------+| ROK(20301125) |+----------------+| 2030 |+----------------+

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

SELECT YEAR(301125); 

Výsledek:

+---------------+| ROK(301125) |+---------------+| 2030 |+--------------+

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

SELECT YEAR(20301135); 

Výsledek:

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

Varování můžeme zkontrolovat takto:

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 
    YEAR('2030/06/25'),
    YEAR('2030,06,25'),
    YEAR('2030:06:25'),
    YEAR('2030;06!25'); 

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

YEAR('2030/06/25'):2030YEAR('2030,06,25'):2030YEAR('2030:06:25'):2030YEAR('2030;06!25'):2030 

Aktuální datum

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

SELECT 
    NOW(),
    YEAR(NOW()); 

Výsledek:

+---------------------+-------------+| NYNÍ() | ROK(NYNÍ()) |+---------------------+-------------+| 2021-05-18 08:55:02 | 2021 |+---------------------+-------------+

Neplatné argumenty

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

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

Výsledek:

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

Zkontrolujte 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í YEAR() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:

SELECT YEAR(); 

Výsledek:

ERROR 1064 (42000):Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi blízko ')' na řádku 1

A další příklad:

SELECT YEAR('2030-12-10', '2031-12-10'); 

Výsledek:

ERROR 1064 (42000):Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi, která se má použít poblíž ''2031-12-10')' na řádku 1

  1. Existuje dotaz Oracle SQL, který agreguje více řádků do jednoho řádku?

  2. DBaaS, cloud a transparentní směrování dotazů

  3. Přístup pomocí Microsoft SQL Server – import velkých datových sad pomocí SSIS

  4. jak provést uloženou proceduru v SQL Developer?