V MySQL je to TO_SECONDS()
funkce vrací počet sekund od roku 0.
Tuto funkci nezaměňujte s TIME_TO_SECONDS()
funkce, která vrací počet sekund v dané časové hodnotě poskytnuté jako argument.
Syntaxe
Syntaxe vypadá takto:
TO_SECONDS(expr)
Kde expr
je hodnota data nebo data a času (pro porovnání s rokem 0).
Příklad 1 – Použití argumentu „datum“
Zde je příklad použití argumentu data.
SELECT TO_SECONDS('2021-09-21');
Výsledek:
+--------------------------+ | TO_SECONDS('2021-09-21') | +--------------------------+ | 63799401600 | +--------------------------+
Příklad 2 – Použití argumentu „datetime“
Zde je příklad použití argumentu datetime.
SELECT TO_SECONDS('2021-09-21 10:30:25');
Výsledek:
+-----------------------------------+ | TO_SECONDS('2021-09-21 10:30:25') | +-----------------------------------+ | 63799439425 | +-----------------------------------+
Příklad 3 – Použití aktuálního data
V tomto příkladu předám CURDATE()
funkce jako argument pro použití aktuálního data.
SELECT TO_SECONDS(CURDATE()) AS 'Result';
Výsledek:
+-------------+ | Result | +-------------+ | 63697968000 | +-------------+
Příklad 4 – Použití aktuálního data a času
V tomto příkladu předám NOW()
funkce jako argument pro použití aktuálního data a času.
SELECT TO_SECONDS(NOW()) AS 'Result';
Výsledek:
+-------------+ | Result | +-------------+ | 63698002698 | +-------------+
Dvouciferné roky
MySQL má speciální pravidla pro práci s daty s dvoucifernými roky. Dvouciferné roky jsou nejednoznačné, protože století není známo. V zásadě platí následující pravidla:
- Hodnoty roku v rozsahu
00-69
jsou převedeny na2000-2069
. - Hodnoty roku v rozsahu
70-99
jsou převedeny na1970-1999
.
Úplné vysvětlení najdete v dokumentaci MySQL o tom, jak MySQL zachází s dvoucifernými roky.
Zde je příklad k demonstraci:
SELECT TO_SECONDS('69-10-07') AS '69 (2069)', TO_SECONDS('70-10-07') AS '70 (1970)';
Výsledek:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Zkrácená data
Můžete použít i zkrácená data. Zde je příklad použití předchozích hodnot data ve zkrácené formě.
SELECT TO_SECONDS('691007') AS '69 (2069)', TO_SECONDS('701007') AS '70 (1970)';
Výsledek:
+-------------+-------------+ | 69 (2069) | 70 (1970) | +-------------+-------------+ | 65315548800 | 62191324800 | +-------------+-------------+
Dřívější data
Dokumentace MySQL varuje, že TO_SECONDS()
funkce:
není určeno pro použití s hodnotami, které předcházejí příchodu gregoriánského kalendáře (1582), protože nebere v úvahu dny, které byly ztraceny při změně kalendáře. Pro data před rokem 1582 (a možná pozdější rok v jiných lokalitách) nejsou výsledky této funkce spolehlivé.