Anda mungkin telah memperhatikan bahwa MySQL memiliki TIMEDIFF()
fungsi dan SUBTIME()
fungsi. Dan Anda mungkin telah memperhatikan bahwa dalam banyak kasus, keduanya memberikan hasil yang sama. Jadi, Anda mungkin bertanya-tanya apa perbedaan antara kedua fungsi ini?
Mari kita cari tahu.
Sintaks
Pertama mari kita lihat sintaks dari setiap fungsi.
SUBTIME()
SUBTIME(expr1,expr2)
Dimana expr1
adalah ekspresi waktu atau datetime, dan expr2
adalah ekspresi waktu.
TIMEDIFF()
TIMEDIFF(expr1,expr2)
Dimana expr1
dan expr2
adalah ekspresi waktu atau tanggal-dan-waktu, tetapi keduanya harus bertipe sama.
Perbedaan
Jadi inilah perbedaannya:
- Saat menggunakan
SUBTIME()
, argumen kedua harus berupa ekspresi waktu . - Saat menggunakan
TIMEDIFF()
argumen kedua dapat berupa ekspresi waktu atau tanggal-dan-waktu, tetapi dalam kedua kasus, itu harus bertipe sama dengan ekspresi pertama .
Contoh 1 – Kedua Argumen adalah Nilai 'waktu'
Berikut perbandingan kedua fungsi, di mana kedua argumen adalah nilai waktu.
SELECT TIMEDIFF('11:35:25', '10:35:25') AS 'TIMEDIFF', SUBTIME('11:35:25', '10:35:25') AS 'SUBTIME';
Hasil:
+----------+----------+ | TIMEDIFF | SUBTIME | +----------+----------+ | 01:00:00 | 01:00:00 | +----------+----------+
Seperti yang diharapkan, kedua fungsi mengembalikan hasil yang sama.
Contoh 2 – Kedua Argumen adalah Nilai 'datetime'
Berikut perbandingan kedua fungsi, di mana kedua argumen adalah nilai datetime.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') AS 'TIMEDIFF', SUBTIME('2021-02-01 10:35:25', '2021-01-01 10:35:25') AS 'SUBTIME';
Hasil:
+-----------+---------+ | TIMEDIFF | SUBTIME | +-----------+---------+ | 744:00:00 | NULL | +-----------+---------+
Dalam hal ini, SUBTIME()
mengembalikan nilai null karena argumen kedua bukan nilai waktu (itu adalah nilai waktu-tanggal).
Contoh 3 – Argumen Pertama adalah 'datetime', Kedua adalah 'time'
Di sini, argumen pertama adalah nilai datetime. Argumen kedua adalah nilai waktu.
SELECT TIMEDIFF('2021-02-01 10:35:25', '09:35:25') AS 'TIMEDIFF', SUBTIME('2021-02-01 10:35:25', '09:35:25') AS 'SUBTIME';
Hasil:
+----------+---------------------+ | TIMEDIFF | SUBTIME | +----------+---------------------+ | NULL | 2021-02-01 01:00:00 | +----------+---------------------+
Dalam hal ini, TIMEDIFF()
mengembalikan nilai null karena kedua argumen memiliki tipe yang berbeda.
Contoh 4 – Argumen pertama adalah 'waktu', Kedua adalah 'datetime'
Dan di sini, kami menukarnya. Argumen pertama adalah nilai waktu. Argumen kedua adalah nilai datetime.
SELECT TIMEDIFF('09:35:25', '2021-01-01 10:35:25') AS 'TIMEDIFF', SUBTIME('09:35:25', '2021-01-01 10:35:25') AS 'SUBTIME';
Hasil:
+----------+---------+ | TIMEDIFF | SUBTIME | +----------+---------+ | NULL | NULL | +----------+---------+
Dalam hal ini:
TIMEDIFF()
mengembalikan nilai null karena kedua argumen memiliki tipe yang berbeda.SUBTIME()
mengembalikan nilai null karena hanya menerima nilai waktu untuk argumen kedua.