MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie TO_SECONDS() in MariaDB funktioniert

In MariaDB TO_SECONDS() ist eine integrierte Datums- und Zeitfunktion, die die Anzahl der Sekunden von Jahr 0 bis zum angegebenen Datums- oder Datumszeitausdruck zurückgibt.

Syntax

Die Syntax lautet wie folgt:

TO_SECONDS(expr)

Wobei expr ist ein Datums- oder Datumszeitwert.

Beispiel

Hier ist ein Beispiel:

SELECT TO_SECONDS('2020-10-30');

Ergebnis:

+--------------------------+
| TO_SECONDS('2020-10-30') |
+--------------------------+
|              63771235200 |
+--------------------------+

Hier ist es mit ein paar anderen Zeitwerten:

SELECT 
    TO_SECONDS('0000-01-01'),
    TO_SECONDS('1234-10-30');

Ergebnis:

+--------------------------+--------------------------+
| TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') |
+--------------------------+--------------------------+
|                    86400 |              38967436800 |
+--------------------------+--------------------------+

Datum/Uhrzeit-Werte

Hier ist ein Beispiel, das einen datetime-Wert verwendet:

SELECT TO_SECONDS('2020-10-30 10:23:47');

Ergebnis:

+-----------------------------------+
| TO_SECONDS('2020-10-30 10:23:47') |
+-----------------------------------+
|                       63771272627 |
+-----------------------------------+

Mikrosekunden

TO_SECONDS() ignoriert Mikrosekunden:

SELECT TO_SECONDS('2020-10-30 10:23:47.999999');

Ergebnis:

+------------------------------------------+
| TO_SECONDS('2020-10-30 10:23:47.999999') |
+------------------------------------------+
|                              63771272627 |
+------------------------------------------+

Numerische Daten

Numerische Datumsangaben werden unterstützt:

SELECT TO_SECONDS(20201030);

Ergebnis:

+----------------------+
| TO_SECONDS(20201030) |
+----------------------+
|          63771235200 |
+----------------------+

Aktuelles Datum/aktuelle Uhrzeit

Hier ist ein Beispiel, das NOW() verwendet um die Anzahl der Sekunden basierend auf dem aktuellen Datum und der aktuellen Uhrzeit zurückzugeben:

SELECT 
    NOW(),
    TO_SECONDS(NOW());

Ergebnis:

+---------------------+-------------------+
| NOW()               | TO_SECONDS(NOW()) |
+---------------------+-------------------+
| 2021-05-31 09:34:16 |       63789672856 |
+---------------------+-------------------+

Wenn wir jedoch CURDATE() verwenden , erhalten wir ein anderes Ergebnis (weil CURDATE() gibt einen Datumswert zurück, wohingegen NOW() gibt einen datetime-Wert zurück).

SELECT 
    NOW(),
    TO_SECONDS(NOW()),
    CURDATE(),
    TO_SECONDS(CURDATE());

Ergebnis (bei vertikaler Ausgabe):

                NOW(): 2021-05-31 09:35:01
    TO_SECONDS(NOW()): 63789672901
            CURDATE(): 2021-05-31
TO_SECONDS(CURDATE()): 63789638400

Ungültiges Argument

Wenn ungültige Argumente übergeben werden, TO_SECONDS() gibt null zurück mit einer Warnung:

SELECT TO_SECONDS('Homer');

Ergebnis:

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

Überprüfen Sie die Warnung:

SHOW WARNINGS;

Ergebnis:

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

Fehlendes Argument

Aufruf von TO_SECONDS() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT TO_SECONDS();

Ergebnis:

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

Und noch ein Beispiel:

SELECT TO_SECONDS('2020-10-08', '10:09:10');

Ergebnis:

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