В MySQL, TO_SECONDS()
функцията връща броя на секундите от годината 0.
Тази функция не трябва да се бърка с TIME_TO_SECONDS()
функция, която връща броя секунди в дадена времева стойност, предоставена като аргумент.
Синтаксис
Синтаксисът е така:
TO_SECONDS(expr)
Където expr
е стойност за дата или час (за сравнение с година 0).
Пример 1 – Използване на аргумент „дата“
Ето пример за използване на аргумент за дата.
SELECT TO_SECONDS('2021-09-21');
Резултат:
+--------------------------+ | TO_SECONDS('2021-09-21') | +--------------------------+ | 63799401600 | +--------------------------+
Пример 2 – Използване на аргумент „datetime“
Ето пример за използване на аргумент дата и час.
SELECT TO_SECONDS('2021-09-21 10:30:25');
Резултат:
+-----------------------------------+ | TO_SECONDS('2021-09-21 10:30:25') | +-----------------------------------+ | 63799439425 | +-----------------------------------+
Пример 3 – Използване на текущата дата
В този пример предавам CURDATE()
функция като аргумент, за да се използва текущата дата.
SELECT TO_SECONDS(CURDATE()) AS 'Result';
Резултат:
+-------------+ | Result | +-------------+ | 63697968000 | +-------------+
Пример 4 – Използване на текущата дата и час
В този пример предавам NOW()
функция като аргумент, за да се използва текущата дата и час.
SELECT TO_SECONDS(NOW()) AS 'Result';
Резултат:
+-------------+ | Result | +-------------+ | 63698002698 | +-------------+
Двуцифрени години
MySQL има специални правила за работа с дати с двуцифрени години. Двуцифрените години са нееднозначни, защото векът е неизвестен. По принцип важат следните правила:
- Годишни стойности в диапазона
00-69
се преобразуват в2000-2069
. - Годишни стойности в диапазона
70-99
се преобразуват в1970-1999
.
За пълно обяснение вижте документацията на MySQL за това как MySQL се справя с двуцифрени години.
Ето пример за демонстрация:
SELECT TO_SECONDS('69-10-07') AS '69 (2069)', TO_SECONDS('70-10-07') AS '70 (1970)';
Резултат:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Съкратени дати
Можете също да използвате съкратени дати. Ето пример, използващ предишните стойности за дата в съкратена форма.
SELECT TO_SECONDS('691007') AS '69 (2069)', TO_SECONDS('701007') AS '70 (1970)';
Резултат:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
По-ранни дати
Документацията на MySQL предупреждава, че TO_SECONDS()
функция:
не е предназначен за използване със стойности, които предхождат появата на Григорианския календар (1582 г.), тъй като не отчита дните, които са били загубени при смяната на календара. За дати преди 1582 г. (и вероятно по-късна година в други локали) резултатите от тази функция не са надеждни.