Saya perlu mendapatkan jumlah hari yang terkandung dalam beberapa tanggal di MySQL.
Sebagai contoh:
- Tanggal check-in adalah
12-04-2010
- Tanggal keluar
15-04-2010
Perbedaan hari adalah 3
Bagaimana dengan fungsi DATEDIFF ?
Mengutip halaman manual:
DATEDIFF () mengembalikan expr1 - expr2 yang dinyatakan sebagai nilai dalam beberapa hari dari satu tanggal ke yang lain. expr1 dan expr2 adalah ekspresi tanggal atau tanggal dan waktu. Hanya bagian tanggal dari nilai yang digunakan dalam perhitungan
Dalam kasus Anda, Anda akan menggunakan:
mysql> select datediff('2010-04-15', '2010-04-12');
+--------------------------------------+
| datediff('2010-04-15', '2010-04-12') |
+--------------------------------------+
| 3 |
+--------------------------------------+
1 row in set (0,00 sec)
Tetapi perhatikan tanggal harus ditulis sebagai YYYY-MM-DD
, dan tidak DD-MM-YYYY
seperti yang Anda posting.
datediff()
metode, jika tidak maka akan menghasilkan nilai negatif.Catatan jika Anda ingin menghitung 24 jam LENGKAP antara 2 tanggal, Dateiff dapat mengembalikan nilai yang salah untuk Anda.
Seperti yang dinyatakan oleh dokumentasi:
yang mengakibatkan
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
mengembalikan 1 bukannya yang diharapkan 0.
Solusi menggunakan
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(perhatikan urutan argumen yang berlawanan dibandingkan dengan Dateiff).Beberapa contoh:
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
mengembalikan 0select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
mengembalikan 1select timestampdiff(DAY, '2016-04-13 11:00:00', now());
mengembalikan berapa hari penuh 24 jam telah berlalu sejak 2016-04-13 11:00:00 sampai sekarang .Berharap itu akan membantu seseorang, karena pada awalnya tidak terlalu jelas mengapa Dateiff mengembalikan nilai yang tampaknya tidak terduga atau salah.
sumber
datediff()
dantimestampdiff()
.Gunakan
DATEDIFF()
fungsinya.Contoh dari dokumentasi:
sumber
Saya lebih suka TIMESTAMPDIFF karena Anda dapat dengan mudah mengubah unit jika perlu.
sumber
Dapatkan hari antara tanggal Saat ini dengan Tanggal tujuan
keluaran
hari
sumber
keluaran::
Semoga ini bisa membantu seseorang di masa depan
sumber