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'