Di MariaDB, TIMESTAMPDIFF()
adalah fungsi tanggal dan waktu bawaan yang mengembalikan perbedaan antara dua ekspresi tanggal atau waktu.
Sintaks
Sintaksnya seperti ini:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
Dimana unit
adalah salah satu dari nilai berikut:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
Unit opsional dapat memiliki awalan SQL_TSI_
.
TIMESTAMPDIFF()
mengembalikan datetime_expr2
– datetime_expr1
.
Satu ekspresi mungkin berupa tanggal dan yang lainnya adalah waktu. Nilai tanggal diperlakukan sebagai bagian waktu 00:00:00
bila perlu.
Contoh
Berikut ini contoh untuk didemonstrasikan:
SELECT TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01');
Hasil:
+------------------------------------------------+ | TIMESTAMPDIFF(DAY, '2030-02-01', '2030-03-01') | +------------------------------------------------+ | 28 | +------------------------------------------------+
Hasil Negatif
Mengganti tanggal memberikan hasil negatif:
SELECT TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01');
Hasil:
+------------------------------------------------+ | TIMESTAMPDIFF(DAY, '2030-03-01', '2030-02-01') | +------------------------------------------------+ | -28 | +------------------------------------------------+
Nilai Tanggal-waktu
Berikut ini contoh melewatkan nilai datetime:
SELECT TIMESTAMPDIFF(
HOUR,
'2030-02-01 00:00:00',
'2030-02-01 12:30:45'
)
AS Result;
Hasil:
+--------+ | Result | +--------+ | 12 | +--------+
Saya menentukan HOUR
, sehingga mengabaikan bagian menit dan detik.
Jenis Campuran
Berikut ini contoh melewatkan nilai tanggal dan waktu:
SELECT TIMESTAMPDIFF(
HOUR,
'2030-02-01',
'2030-02-01 12:30:45'
)
AS Result;
Hasil:
+--------+ | Result | +--------+ | 12 | +--------+
Seperti yang disebutkan, nilai tanggal diperlakukan sebagai bagian waktu 00:00:00
.
Menambahkan SQL_TSI_
Awalan
Unit dapat menyertakan SQL_TSI_
awalan jika diperlukan:
SELECT TIMESTAMPDIFF(
SQL_TSI_YEAR,
'2030-02-01',
'2035-02-01'
)
AS Result;
Hasil:
+--------+ | Result | +--------+ | 5 | +--------+
Mikrodetik
Berikut ini contoh yang mengembalikan mikrodetik:
SELECT TIMESTAMPDIFF(
MICROSECOND,
'2030-02-01 10:30:45.000000',
'2030-02-01 10:30:45.123456'
)
AS Result;
Hasil:
+--------+ | Result | +--------+ | 123456 | +--------+
Inilah satu di mana mikrodetik sebenarnya tidak ditentukan dalam nilai datetime:
SELECT TIMESTAMPDIFF(
MICROSECOND,
'2030-02-01 10:30:45',
'2030-02-01 12:30:45'
)
AS Result;
Hasil:
+------------+ | Result | +------------+ | 7200000000 | +------------+
Tanggal Saat Ini
Kita dapat melewati NOW()
salah satu argumen datetime untuk membandingkan tanggal dan waktu saat ini dengan tanggal lain:
SELECT
NOW(),
TIMESTAMPDIFF(DAY, NOW(), '2021-03-31') AS Diff;
Hasil:
+---------------------+------+ | NOW() | Diff | +---------------------+------+ | 2021-05-30 09:29:01 | -60 | +---------------------+------+
Tanggal Nol
Jika salah satu tanggal null
, hasilnya null
:
SELECT TIMESTAMPDIFF(
YEAR,
'2030-02-01',
NULL
)
AS Result;
Hasil:
+--------+ | Result | +--------+ | NULL | +--------+
Argumen Tidak Ada
Memanggil TIMESTAMPDIFF()
dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun, menghasilkan kesalahan:
SELECT TIMESTAMPDIFF();
Hasil:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Dan contoh lain:
SELECT TIMESTAMPDIFF('2020-12-09');
Hasil:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '10, '2020-12-09')' at line 1