目次
1. Apa itu DATETIME
di MySQL?
DATETIME
di MySQL adalah tipe data yang digunakan untuk menangani tanggal dan waktu secara bersamaan. Pengelolaan tanggal dan waktu dalam basis data sangat penting untuk berbagai aplikasi, seperti pencatatan log dan sistem pemesanan. Tipe DATETIME
menyimpan tanggal dan waktu dalam satu bidang dan dapat menampung berbagai nilai. Rentangnya adalah dari '1000-01-01 00:00:00'
hingga '9999-12-31 23:59:59'
, dan juga mendukung pecahan detik.2. Gambaran Umum Tipe Data Tanggal dan Waktu MySQL
2.1 Tipe Data untuk Menangani Tanggal dan Waktu
MySQL memiliki tipe data berikut untuk menangani tanggal dan waktu:DATE
: Tipe data untuk menangani tanggal (tahun, bulan, hari). Rentangnya dari'1000-01-01'
hingga'9999-12-31'
.TIME
: Tipe data untuk menangani waktu saja. Rentangnya dari'-838:59:59'
hingga'838:59:59'
.DATETIME
: Tipe data yang menggabungkan tanggal dan waktu. Rentangnya dari'1000-01-01 00:00:00'
hingga'9999-12-31 23:59:59'
.TIMESTAMP
: Tipe data untuk menyimpan stempel waktu UNIX. Rentangnya dari'1970-01-01 00:00:01'
hingga'2038-01-19 03:14:07'
.
2.2 Perbedaan antara DATETIME
dan TIMESTAMP
DATETIME
dan TIMESTAMP
memiliki kemiripan, tetapi ada perbedaan berikut:- Zona Waktu:
DATETIME
menyimpan nilai tetap yang tidak bergantung pada zona waktu. Di sisi lain,TIMESTAMP
dikonversi ke UTC saat disimpan dan dikonversi kembali ke zona waktu server saat diambil. Oleh karena itu,DATETIME
cocok untuk tanggal dan waktu yang tidak terpengaruh oleh zona waktu (misalnya, waktu acara), sedangkanTIMESTAMP
cocok untuk data yang terkait dengan zona waktu server, seperti pencatatan log. - Format Penyimpanan:
DATETIME
disimpan dalam format aslinya, sedangkanTIMESTAMP
disimpan sebagai stempel waktu UNIX. Oleh karena itu,TIMESTAMP
terpengaruh oleh pengaturan zona waktu server dalam representasi waktu data.
3. Cara Menggunakan DATETIME
di MySQL
3.1 Membuat Kolom DATETIME
Untuk membuat kolom bertipe DATETIME
, gunakan sintaks SQL berikut:CREATE TABLE sample_table (
event_time DATETIME
);
Dalam contoh ini, sebuah kolom DATETIME
bernama event_time
dibuat dalam tabel sample_table
.3.2 Memasukkan Nilai DATETIME
Nilai DATETIME
di MySQL dapat dimasukkan dalam berbagai format. Format dasarnya adalah 'YYYY-MM-DD HH:MM:SS'
. Contoh:INSERT INTO sample_table (event_time) VALUES ('2024-09-16 14:30:00');
Format lain yang diizinkan meliputi:'YY-MM-DD HH:MM:SS'
: Format yang menentukan tahun dengan dua digit.'YYYYMMDDHHMMSS'
: Format yang ditentukan tanpa pemisah.
INSERT INTO sample_table (event_time) VALUES ('24-09-16 14:30:00');
INSERT INTO sample_table (event_time) VALUES (20240916143000);
Data yang dimasukkan dalam format ini akan disimpan dengan benar. Jika tahun ditentukan dengan dua digit, '70-99'
akan dikonversi menjadi 1970-1999
, dan '00-69'
akan dikonversi menjadi 2000-2069
.3.3 Mengambil Nilai DATETIME
Saat mengambil nilai DATETIME
, MySQL secara default menampilkannya dalam format 'YYYY-MM-DD HH:MM:SS'
. Contoh:SELECT event_time FROM sample_table;
Kueri ini akan menampilkan nilai kolom DATETIME
dalam tabel dalam format standar.4. Penanganan Pecahan Detik
4.1 Presisi DATETIME
Di MySQL, Anda dapat menyertakan pecahan detik dalam nilai DATETIME
. Anda dapat menentukan presisi dengan opsi fsp
, yang memungkinkan penyimpanan pecahan detik dalam rentang 0 hingga 6. Misalnya, untuk membuat kolom dengan pecahan detik 3 digit:CREATE TABLE precise_times (
event_time DATETIME(3)
);
Dalam contoh ini, kolom event_time
dapat menyimpan hingga 3 digit pecahan detik.4.2 Memasukkan Nilai dengan Pecahan Detik
Untuk memasukkan nilaiDATETIME
yang menyertakan pecahan detik, lakukan sebagai berikut:INSERT INTO precise_times (event_time) VALUES ('2024-09-16 14:30:00.123');
Kueri ini akan menyimpan nilai yang menyertakan pecahan detik dengan tepat. Nilai pecahan yang dimasukkan disimpan tanpa pemotongan, dan presisi dipertahankan saat diambil. 
5. Praktik Terbaik DATETIME
5.1 Kapan Menggunakan DATETIME
dan TIMESTAMP
- Gunakan
DATETIME
: Untuk tanggal dan waktu tetap yang tidak bergantung pada zona waktu (misalnya, waktu mulai acara, tanggal pemesanan). - Gunakan
TIMESTAMP
: Untuk data tanggal dan waktu yang terkait dengan zona waktu server (misalnya, waktu pembuatan atau pembaruan data).
5.2 Pengelolaan Zona Waktu
KarenaDATETIME
tidak memiliki konsep zona waktu, pengelolaan zona waktu harus dilakukan di sisi aplikasi. Di sisi lain, TIMESTAMP
secara otomatis mempertimbangkan zona waktu server saat menyimpan dan mengambil nilai, sehingga cocok untuk operasi di berbagai zona waktu di seluruh dunia.6. Kesalahan Umum dan Cara Menghindarinya
6.1 Tanggal Nol dan Nilai Tidak Valid
Di MySQL, mencoba memasukkan nilaiDATETIME
yang tidak valid akan menyebabkan tanggal nol '0000-00-00 00:00:00'
disimpan. Karena ini umumnya bukan tanggal yang valid, Anda perlu melakukan validasi selama entri data untuk mencegah pemasukan nilai yang tidak valid. Dengan mengimplementasikan validasi untuk memastikan data masukan mematuhi rentang dan format yang sesuai, Anda dapat mencegah penyimpanan tanggal nol.6.2 Penyalahgunaan Presisi
Saat menentukan presisi pecahan detik, penggunaan presisi yang salah dapat menyebabkan hasil yang tidak diinginkan. Tentukan presisi pecahan detik hanya jika diperlukan dan atur nilaifsp
dengan hati-hati. Misalnya, jika aplikasi Anda tidak memerlukan presisi di bawah detik, Anda tidak perlu mengatur pecahan detik untuk kolom DATETIME
.7. Ringkasan
Artikel ini menjelaskan secara rinci tentang tipeDATETIME
di MySQL. DATETIME
adalah tipe data yang sangat berguna untuk menangani tanggal dan waktu secara bersamaan, dan cocok untuk menyimpan nilai yang tidak terpengaruh oleh zona waktu. Dengan memahami perbedaan antara DATETIME
dan TIMESTAMP
, penanganan zona waktu, dan penggunaan pecahan detik, Anda dapat mengelola data tanggal dan waktu dalam basis data secara efektif. Selain itu, memiliki pengetahuan tentang kesalahan umum dan cara menghindarinya akan membantu menjaga konsistensi dan keandalan data.8. Pertanyaan Umum (FAQ)
Q1: Apa perbedaan utama antara DATETIME
dan TIMESTAMP
?
DATETIME
menyimpan tanggal dan waktu tetap tanpa bergantung pada zona waktu. Misalnya, cocok untuk menyimpan tanggal pemesanan atau waktu acara yang tidak berubah di zona waktu mana pun. Sementara itu, TIMESTAMP
disimpan berdasarkan UTC dan dikonversi ke zona waktu server saat diambil. Ini cocok untuk data tanggal dan waktu yang bergantung pada zona waktu server, seperti pencatatan log.Q2: Bagaimana cara menyimpan pecahan detik dengan DATETIME
?
Saat membuat kolom DATETIME
, Anda dapat mengatur presisi pecahan detik dengan menentukan nilai fsp
. Misalnya, jika Anda menentukan DATETIME(3)
, Anda dapat menyimpan hingga 3 digit pecahan detik. Saat memasukkan, gunakan nilai yang menyertakan pecahan detik, dan itu akan disimpan dalam format yang sesuai.Q3: Mana yang harus saya gunakan, DATETIME
atau TIMESTAMP
?
Tergantung pada penggunaannya. Gunakan DATETIME
jika Anda ingin menyimpan tanggal dan waktu tetap. Di sisi lain, gunakan TIMESTAMP
untuk data tanggal dan waktu yang terpengaruh oleh zona waktu server, seperti waktu pembuatan atau pembaruan data. TIMESTAMP
cocok jika Anda memerlukan operasi di berbagai zona waktu karena konversi zona waktu otomatisnya.