sql >> Database >  >> RDS >> MariaDB

4 functies die het secondengedeelte van een tijdwaarde in MariaDB retourneren

Hieronder staan ​​4 functies waarmee u het secondengedeelte van een tijdwaarde in MariaDB kunt retourneren.

De SECOND() Functie

De SECOND() functie retourneert het secondengedeelte van een gegeven TIME of DATETIME uitdrukking. Het accepteert één argument, namelijk de tijd waaruit je de seconden wilt halen.

Voorbeeld:

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

Resultaat:

+--------------------+
| SECOND('03:45:30') |
+--------------------+
|                 30 |
+--------------------+

TIME waarden kunnen in het bereik liggen '-838:59:59.999999' naar '838:59:59.999999' . Dit omvat microseconden, maar SECOND() geeft alleen het tweede deel terug (er is een MICROSECOND() functie voor het retourneren van microseconden).

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

Hier is een negatieve tijdwaarde met een deel van microseconden:

SELECT SECOND('-838:59:59.999999');

Resultaat:

+-----------------------------+
| SECOND('-838:59:59.999999') |
+-----------------------------+
|                          59 |
+-----------------------------+

Het tweede deel wordt geëxtraheerd zoals verwacht.

De EXTRACT() Functie

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

Voorbeeld:

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

Resultaat:

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

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 daarom gebruiken om de seconden (evenals minuten en uren) van de tijd terug te geven.

De %s en %S formaatspecificaties retourneren beide de seconden met twee cijfers:

SELECT 
    TIME_FORMAT('10:07:30', '%s'),
    TIME_FORMAT('10:07:30', '%S');

Resultaat:

+-------------------------------+-------------------------------+
| TIME_FORMAT('10:07:30', '%s') | TIME_FORMAT('10:07:30', '%S') |
+-------------------------------+-------------------------------+
| 30                            | 30                            |
+-------------------------------+-------------------------------+

U kunt ook de $f . gebruiken formaatspecificatie om subseconden van zes cijfers te retourneren:

SELECT 
    TIME_FORMAT('10:07:30.123456', '%f') AS "Microseconds",
    TIME_FORMAT('10:07:30.123456', '%s.%f') AS "Both";

Resultaat:

+--------------+-----------+
| Microseconds | Both      |
+--------------+-----------+
| 123456       | 30.123456 |
+--------------+-----------+

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/subseconden. 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 10:07:30', '%s');

Resultaat:

+------------------------------------------+
| DATE_FORMAT('2023-01-01 10:07:30', '%s') |
+------------------------------------------+
| 30                                       |
+------------------------------------------+

Slechts een TIME voorbijgaan waarde werkt niet met deze functie:

SELECT DATE_FORMAT('10:07:30', '%s') AS '%s';

Resultaat:

+------+
| %s   |
+------+
| 00   |
+------+

  1. MySQL db vraagtekens in plaats van Hebreeuwse karakters..?

  2. Ontvang de huidige AUTO_INCREMENT-waarde voor elke tabel

  3. postgreSQL mysql orakel verschillen

  4. PostgreSQL CASE ... END met meerdere voorwaarden