Di MariaDB, TO_SECONDS()
adalah fungsi tanggal dan waktu bawaan yang mengembalikan jumlah detik dari tahun 0 ke tanggal atau ekspresi datetime yang diberikan.
Sintaks
Sintaksnya seperti ini:
TO_SECONDS(expr)
Dimana expr
adalah nilai tanggal atau waktu.
Contoh
Ini contohnya:
SELECT TO_SECONDS('2020-10-30');
Hasil:
+--------------------------+ | TO_SECONDS('2020-10-30') | +--------------------------+ | 63771235200 | +--------------------------+
Ini dia dengan beberapa nilai waktu lainnya:
SELECT
TO_SECONDS('0000-01-01'),
TO_SECONDS('1234-10-30');
Hasil:
+--------------------------+--------------------------+ | TO_SECONDS('0000-01-01') | TO_SECONDS('1234-10-30') | +--------------------------+--------------------------+ | 86400 | 38967436800 | +--------------------------+--------------------------+
Nilai Tanggal-waktu
Berikut ini contoh yang menggunakan nilai datetime:
SELECT TO_SECONDS('2020-10-30 10:23:47');
Hasil:
+-----------------------------------+ | TO_SECONDS('2020-10-30 10:23:47') | +-----------------------------------+ | 63771272627 | +-----------------------------------+
Mikrodetik
TO_SECONDS()
mengabaikan mikrodetik:
SELECT TO_SECONDS('2020-10-30 10:23:47.999999');
Hasil:
+------------------------------------------+ | TO_SECONDS('2020-10-30 10:23:47.999999') | +------------------------------------------+ | 63771272627 | +------------------------------------------+
Tanggal Numerik
Tanggal numerik didukung:
SELECT TO_SECONDS(20201030);
Hasil:
+----------------------+ | TO_SECONDS(20201030) | +----------------------+ | 63771235200 | +----------------------+
Tanggal/Waktu Saat Ini
Berikut adalah contoh yang menggunakan NOW()
untuk mengembalikan jumlah detik berdasarkan tanggal dan waktu saat ini:
SELECT
NOW(),
TO_SECONDS(NOW());
Hasil:
+---------------------+-------------------+ | NOW() | TO_SECONDS(NOW()) | +---------------------+-------------------+ | 2021-05-31 09:34:16 | 63789672856 | +---------------------+-------------------+
Namun, jika kita menggunakan CURDATE()
, kita akan mendapatkan hasil yang berbeda (karena CURDATE()
mengembalikan nilai tanggal, sedangkan NOW()
mengembalikan nilai datetime).
SELECT
NOW(),
TO_SECONDS(NOW()),
CURDATE(),
TO_SECONDS(CURDATE());
Hasil (menggunakan keluaran vertikal):
NOW(): 2021-05-31 09:35:01 TO_SECONDS(NOW()): 63789672901 CURDATE(): 2021-05-31 TO_SECONDS(CURDATE()): 63789638400
Argumen Tidak Valid
Saat melewati argumen yang tidak valid, TO_SECONDS()
mengembalikan null
dengan peringatan:
SELECT TO_SECONDS('Homer');
Hasil:
+---------------------+ | TO_SECONDS('Homer') | +---------------------+ | NULL | +---------------------+ 1 row in set, 1 warning (0.000 sec)
Periksa peringatannya:
SHOW WARNINGS;
Hasil:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Argumen Tidak Ada
Memanggil TO_SECONDS()
dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun, menghasilkan kesalahan:
SELECT TO_SECONDS();
Hasil:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'
Dan contoh lain:
SELECT TO_SECONDS('2020-10-08', '10:09:10');
Hasil:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_SECONDS'