sql >> Database >  >> RDS >> MariaDB

Hoe YEAR() werkt in MariaDB

In MariaDB, YEAR() is een ingebouwde datum- en tijdfunctie die het jaar retourneert uit een bepaalde datumuitdrukking.

Het accepteert één argument, namelijk de datum waaruit je het jaar wilt halen.

Het geeft het jaar terug als een getal in het bereik 1000 tot 9999 . Voor nuldatums (bijv. 0000-00-00 ), het resultaat is 0 .

Syntaxis

De syntaxis gaat als volgt:

YEAR(date)

Waar date is de datumuitdrukking om het jaar uit te halen.

Voorbeeld

Hier is een voorbeeld:

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

Resultaat:

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

Datum/tijd-waarden

Het werkt ook met datetime-waarden:

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

Resultaat:

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

Nul datums

Nuldatums resulteren in 0 .

Voorbeeld:

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

Resultaat:

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

Numerieke datums

Het is ook mogelijk om datums als een getal door te geven, zolang het maar logisch is als een datum.

Voorbeeld

SELECT YEAR(20301125);

Resultaat:

+----------------+
| YEAR(20301125) |
+----------------+
|           2030 |
+----------------+

Of zelfs het volgende (met een jaartal van twee cijfers):

SELECT YEAR(301125);

Resultaat:

+--------------+
| YEAR(301125) |
+--------------+
|         2030 |
+--------------+

Maar het moet logisch zijn als een date. Dit gebeurt er als ik het daggedeelte verhoog naar een ongeldige dag:

SELECT YEAR(20301135);

Resultaat:

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

We kunnen de waarschuwing als volgt controleren:

SHOW WARNINGS;

Resultaat:

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

Andere scheidingstekens

U kunt andere scheidingstekens voor de datum gebruiken. MariaDB is behoorlijk vergevingsgezind als het gaat om scheidingstekens op datums. Hier zijn enkele geldige voorbeelden:

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

Resultaat (met verticale uitvoer):

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

Huidige datum

We kunnen NOW() doorgeven als het datetime-argument om de huidige datum te gebruiken:

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

Resultaat:

+---------------------+-------------+
| NOW()               | YEAR(NOW()) |
+---------------------+-------------+
| 2021-05-18 08:55:02 |        2021 |
+---------------------+-------------+

Ongeldige argumenten

Wanneer een ongeldig argument wordt doorgegeven, YEAR() retourneert null :

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

Resultaat:

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

Controleer de waarschuwing:

SHOW WARNINGS;

Resultaat:

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

Ontbrekend argument

Bellen YEAR() met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:

SELECT YEAR();

Resultaat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

En nog een voorbeeld:

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

Resultaat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '2031-12-10')' at line 1

  1. Oracle-aggregaat voor het samenvoegen van tekenreeksen met komma's en voor het schrijven van aangepaste aggregaten

  2. Geef informatie over de versie van het besturingssysteem terug in SQL Server met de dynamische beheerweergave sys.dm_os_host_info

  3. Moet het laten vallen van een database in geen enkele transactie gebeuren?

  4. Hoe EXCEPT werkt in SQL Server