sql >> Database >  >> RDS >> MariaDB

4 functies om het uur uit een tijdwaarde te halen in MariaDB

Hieronder staan ​​4 functies waarmee u het uur kunt retourneren vanuit een tijdwaarde in MariaDB.

Het HOUR() Functie

Het HOUR() functie retourneert het uur voor een gegeven TIME of DATETIME uitdrukking. Het accepteert één argument, namelijk de tijd waaruit je het uur wilt halen.

Voorbeeld:

SELECT HOUR('03:45:30');

Resultaat:

+------------------+
| HOUR('03:45:30') |
+------------------+
|                3 |
+------------------+

Voor waarden voor de tijd van de dag wordt het uur geretourneerd als een getal in het bereik 0 tot 23 . Het bereik van TIME waarden kunnen veel groter zijn en daarom kan de geretourneerde waarde veel hoger zijn dan 23 . In het bijzonder TIME waarden kunnen in het bereik liggen '-838:59:59.999999' naar '838:59:59.999999' .

Hier is een voorbeeld met een groter uurdeel:

SELECT HOUR('838:45:30');

Resultaat:

+-------------------+
| HOUR('838:45:30') |
+-------------------+
|               838 |
+-------------------+

Als de tijd buiten het geaccepteerde bereik valt voor TIME waarden, is de retourwaarde 838 met een waarschuwing.

TIME waarden kunnen ook negatief zijn. In dergelijke gevallen, HOUR() geeft een positieve waarde terug.

De EXTRACT() Functie

De EXTRACT() Met deze functie kunt u een gespecificeerde eenheid extraheren uit de datum/tijd-waarde. Daarom kunt u het gebruiken om het uur (evenals andere eenheden) uit de tijdwaarde te extraheren.

Voorbeeld:

SELECT EXTRACT(HOUR FROM '10:47:01');

Resultaat:

+-------------------------------+
| EXTRACT(HOUR FROM '10:47:01') |
+-------------------------------+
|                            10 |
+-------------------------------+

De TIME_FORMAT() Functie

De TIME_FORMAT() Met deze functie kunt u een tijdwaarde opmaken op basis van een opmaakreeks. De format string geeft aan hoe de tijd moet worden geformatteerd.

U kunt deze functie dus gebruiken om het uur (evenals minuten en seconden) uit de tijd terug te halen. Er zijn verschillende mogelijkheden om het uur terug te geven.

Hier is een voorbeeld dat het uur in verschillende vormen retourneert:

SELECT 
    TIME_FORMAT('18:45:30', '%H') AS '%H',
    TIME_FORMAT('18:45:30', '%h') AS '%h',
    TIME_FORMAT('18:45:30', '%I') AS '%I',
    TIME_FORMAT('18:45:30', '%k') AS '%k',
    TIME_FORMAT('18:45:30', '%l') AS '%l';

Resultaat:

+------+------+------+------+------+
| %H   | %h   | %I   | %k   | %l   |
+------+------+------+------+------+
| 18   | 06   | 06   | 18   | 6    |
+------+------+------+------+------+

Hier is een beschrijving van elk van deze formaatspecificaties:

Formaatspecificatie Beschrijving
%H Uur met 2 cijfers tussen 00-23.
%h Uur met 2 cijfers tussen 01-12.
%I Uur met 2 cijfers tussen 01-12.
%k Uur met 1 cijfers tussen 0-23.
%l Uur met 1 cijfers tussen 1-12.

De TIME_FORMAT() functie accepteert een subset van de format strings die gebruikt kunnen worden met de DATE_FORMAT() functie. Zie MariaDB Format Strings voor een volledige lijst van format strings/specificaties die kunnen worden gebruikt met DATE_FORMAT() . De TIME_FORMAT() functie accepteert alleen formaatspecificaties voor uren, minuten en seconden. Elke andere indelingsspecificatie resulteert in null of 0 wordt geretourneerd.

De DATE_FORMAT() Functie

De DATE_FORMAT() Met deze functie kunt u een datum- of datetime-waarde opmaken op basis van een notatiereeks. De format string geeft aan hoe de datum/tijd moet worden opgemaakt.

We kunnen daarom dezelfde formaatspecificaties gebruiken die we gebruikten met de TIME_FORMAT() functie in het vorige voorbeeld. Echter, DATE_FORMAT() accepteert geen TIME waarde, dus we moeten een DATETIME . doorgeven waarde.

SELECT 
    DATE_FORMAT('2023-01-01 18:45:30', '%H') AS '%H',
    DATE_FORMAT('2023-01-01 18:45:30', '%h') AS '%h',
    DATE_FORMAT('2023-01-01 18:45:30', '%I') AS '%I',
    DATE_FORMAT('2023-01-01 18:45:30', '%k') AS '%k',
    DATE_FORMAT('2023-01-01 18:45:30', '%l') AS '%l';

Resultaat:

+------+------+------+------+------+
| %H   | %h   | %I   | %k   | %l   |
+------+------+------+------+------+
| 18   | 06   | 06   | 18   | 6    |
+------+------+------+------+------+

Slechts een TIME voorbijgaan waarde past niet helemaal bij deze functie:

SELECT 
    DATE_FORMAT('18:45:30', '%H') AS '%H',
    DATE_FORMAT('18:45:30', '%h') AS '%h',
    DATE_FORMAT('18:45:30', '%I') AS '%I',
    DATE_FORMAT('18:45:30', '%k') AS '%k',
    DATE_FORMAT('18:45:30', '%l') AS '%l';

Resultaat:

+------+------+------+------+------+
| %H   | %h   | %I   | %k   | %l   |
+------+------+------+------+------+
| NULL | NULL | NULL | NULL | NULL |
+------+------+------+------+------+
1 row in set, 5 warnings (0.000 sec)

Toon de waarschuwingen:

SHOW WARNINGS;

Resultaat:

+---------+------+--------------------------------------+
| Level   | Code | Message                              |
+---------+------+--------------------------------------+
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
| Warning | 1292 | Incorrect datetime value: '18:45:30' |
+---------+------+--------------------------------------+

  1. Hoe Sqlite-database te herstellen na een back-up van Android

  2. Natuurlijk (menselijk alfanumeriek) sorteren in Microsoft SQL 2005

  3. Hoe verschillende records uit een tabel in SQL Server te halen - SQL Server / TSQL-zelfstudie 112

  4. Tabelstructuur kopiëren naar nieuwe tabel