sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer TIME_TO_SEC() i MariaDB

I MariaDB, TIME_TO_SEC() er en indbygget dato- og tidsfunktion, der returnerer sit tidsargument, konverteret til sekunder.

Syntaks

Syntaksen ser sådan ud:

TIME_TO_SEC(time)

Hvor time er den tidsværdi, der skal konverteres til sekunder.

Eksempel

Her er et eksempel:

SELECT TIME_TO_SEC('00:01:00');

Resultat:

+-------------------------+
| TIME_TO_SEC('00:01:00') |
+-------------------------+
|                      60 |
+-------------------------+

Her er den med et par andre tidsværdier:

SELECT 
    TIME_TO_SEC('01:00:00'),
    TIME_TO_SEC('15:37:46');

Resultat:

+-------------------------+-------------------------+
| TIME_TO_SEC('01:00:00') | TIME_TO_SEC('15:37:46') |
+-------------------------+-------------------------+
|                    3600 |                   56266 |
+-------------------------+-------------------------+

Mikrosekunder

TIME_TO_SEC() understøtter mikrosekunder:

SELECT TIME_TO_SEC('00:01:00.123456');

Resultat:

+--------------------------------+
| TIME_TO_SEC('00:01:00.123456') |
+--------------------------------+
|                      60.123456 |
+--------------------------------+

Større timer

TIME værdier kan være i området '-838:59:59.999999' til '838:59:59.999999' .

Derfor kan timedelen være meget højere end 23 :

SELECT TIME_TO_SEC('838:59:59');

Resultat:

+--------------------------+
| TIME_TO_SEC('838:59:59') |
+--------------------------+
|                  3020399 |
+--------------------------+

Negative tidsværdier

Her er et eksempel med en negativ tidsværdi:

SELECT TIME_TO_SEC('-820:38:15');

Resultat:

+---------------------------+
| TIME_TO_SEC('-820:38:15') |
+---------------------------+
|                  -2954295 |
+---------------------------+

Udenfor rækkevidde

Angivelse af en tidsværdi uden for området vil dog returnere sekunderne for den øvre grænse for det pågældende område sammen med en advarsel:

SELECT TIME_TO_SEC('920:38:15');

Resultat:

+--------------------------+
| TIME_TO_SEC('920:38:15') |
+--------------------------+
|                  3020399 |
+--------------------------+
1 row in set, 1 warning (0.002 sec)

Lad os tjekke advarslen:

SHOW WARNINGS;

Resultat:

+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '920:38:15' |
+---------+------+---------------------------------------------+

Ugyldigt argument

Når ugyldige argumenter sendes, TIME_TO_SEC() returnerer null med en advarsel:

SELECT TIME_TO_SEC('Homer');

Resultat:

+----------------------+
| TIME_TO_SEC('Homer') |
+----------------------+
|                 NULL |
+----------------------+
1 row in set, 1 warning (0.000 sec)

Tjek advarslen:

SHOW WARNINGS;

Resultat:

+---------+------+-------------------------------+
| Level   | Code | Message                       |
+---------+------+-------------------------------+
| Warning | 1292 | Incorrect time value: 'Homer' |
+---------+------+-------------------------------+

Manglende argument

Kalder TIME_TO_SEC() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT TIME_TO_SEC();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_TO_SEC'

Og endnu et eksempel:

SELECT TIME_TO_SEC('10:09:10', 2);

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TIME_TO_SEC'

  1. SQL Server PIVOT måske?

  2. Heroku-databasegendannelsesproblem

  3. Hvornår vælger du opdateringslås og oplåsning?

  4. Gruppér efter kolonne og flere rækker i en række flere kolonner