В MariaDB, TO_SECONDS()
е вградена функция за дата и час, която връща броя на секундите от година 0 до дадена дата или израз за дата и час.
Синтаксис
Синтаксисът е така:
TO_SECONDS(expr)
Където expr
е стойност за дата или час.
Пример
Ето един пример:
SELECT TO_SECONDS('2020-10-30');
Резултат:
+-------------------------+| TO_SECONDS('2020-10-30') |+--------------------------+| 63771235200 |+------------------------------+
Ето го с няколко други времеви стойности:
SELECT
TO_SECONDS('0000-01-01'),
TO_SECONDS('1234-10-30');
Резултат:
+--------------------+------------------- -------+| TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') |+--------------------------+----------- ---------------+| 86400 | 38967436800 |+------------------------------+------------------- ------+
Стойности за дата и час
Ето пример, който използва стойност за дата и час:
SELECT TO_SECONDS('2020-10-30 10:23:47');
Резултат:
+---------------------------------+| TO_SECONDS('2020-10-30 10:23:47') |+-------------------------------- --+| 63771272627 |+----------------------------------+
Микросекунди
TO_SECONDS()
игнорира микросекунди:
SELECT TO_SECONDS('2020-10-30 10:23:47.999999');
Резултат:
+------------------------------------+| TO_SECONDS('2020-10-30 10:23:47.999999') |+-------------------------------- ---------+| 63771272627 |+--------------------------------------------------+
Числови дати
Поддържат се числови дати:
SELECT TO_SECONDS(20201030);
Резултат:
+---------------------+| TO_SECONDS(20201030) |+---------------------+| 63771235200 |+---------------------+
Текуща дата/час
Ето пример, който използва NOW()
за да върнете броя на секундите въз основа на текущата дата и час:
SELECT
NOW(),
TO_SECONDS(NOW());
Резултат:
<пред>+---------------------+-------------------+| СЕГА() | TO_SECONDS(СЕГА()) |+---------------------+-------------------+ | 31.05.2021 09:34:16 | 63789672856 |+---------------------+-------------------+
Ако обаче използваме CURDATE()
, ще получим различен резултат (защото CURDATE()
връща стойност за дата, докато NOW()
връща стойност за дата и час).
SELECT
NOW(),
TO_SECONDS(NOW()),
CURDATE(),
TO_SECONDS(CURDATE());
Резултат (с помощта на вертикален изход):
СЕГА():2021-05-31 09:35:01 TO_SECONDS(NOW()):63789672901 CURDATE():2021-05-31TO_SECONDS(CURDATE()):63789638400
Невалиден аргумент
Когато се подадат невалидни аргументи, TO_SECONDS()
връща null
с предупреждение:
SELECT TO_SECONDS('Homer');
Резултат:
+---------------------+| TO_SECONDS('Homer') |+---------------------+| NULL |+---------------------+1 ред в комплект, 1 предупреждение (0,000 сек.)
Проверете предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- --+| Ниво | Код | Съобщение |+--------+------+------------------------------ -+| Предупреждение | 1292 | Неправилна стойност на времето:'Homer' |+--------+------+------------------------ -------+
Липсващ аргумент
Извикване на TO_SECONDS()
с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT TO_SECONDS();
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „TO_SECONDS“
И още един пример:
SELECT TO_SECONDS('2020-10-08', '10:09:10');
Резултат:
ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „TO_SECONDS“