Tipe data dalam MySQL yang digunakan untuk data tanggal dan waktu adalah

Saya memiliki perspektif yang sedikit berbeda tentang perbedaan antara datetime dan TIMESTAMP . A DATETIME menyimpan nilai literal dari tanggal dan waktu tanpa referensi ke zona waktu tertentu. Jadi, saya dapat menetapkan kolom DATETIME ke nilai seperti '2019-01-16 12:15:00' untuk menunjukkan secara tepat kapan ulang tahun terakhir saya terjadi . Apakah ini Waktu Standar Timur? Waktu Standar Pasifik? Siapa tahu? Di mana zona waktu server saat ini ikut bermain terjadi ketika Anda menetapkan DATETIME kolom ke beberapa nilai seperti SEKARANG () . Nilai yang disimpan akan menjadi tanggal dan waktu saat ini menggunakan zona waktu saat ini berlaku. Tapi begitu DATETIME kolom telah diset, itu akan menampilkan yang sama terlepas dari apa zona waktu saat ini.

A TIMESTAMP kolom di sisi lain mengambil nilai '2019-01-16 12:15:00' yang Anda tetapkan ke dalamnya dan menafsirkannya dalam arus zona waktu untuk menghitung representasi internal relatif ke 1/1/1970 00:00:00 UTC. Ketika kolom ditampilkan, itu akan dikonversi kembali untuk tampilan berdasarkan apa pun zona waktu saat ini. Adalah fiksi berguna untuk memikirkan cap waktu mengambil nilai yang Anda atur dan mengonversinya dari zona waktu saat ini ke UTC untuk disimpan dan kemudian mengubahnya kembali ke zona waktu saat ini untuk ditampilkan.

Jika server saya ada di San Francisco tetapi saya menjalankan sebuah acara di New York yang dimulai pada 9/1/1029 pukul 20:00, saya akan menggunakan TIMESTAMP = kolom untuk menahan waktu mulai, atur zona waktu ke 'Amerika/New York' dan atur waktu mulai ke '2009-09-01 20:00:00'. Jika saya ingin tahu apakah acara telah terjadi atau belum, terlepas dari pengaturan zona waktu saat ini saya dapat membandingkan waktu mulai dengan SEKARANG (). Tentu saja, untuk menampilkan dengan cara yang berarti kepada pelanggan perspektif, saya akan perlu mengatur zona waktu yang benar. Jika saya tidak perlu melakukan perbandingan waktu, maka saya mungkin akan lebih baik hanya menggunakan --- DATETIME kolom, yang akan ditampilkan dengan benar (dengan waktu EST tersirat zona) terlepas dari apa zona waktu server saat ini.

Tergantung pada aplikasi, sungguh.

Pertimbangkan untuk menetapkan stempel waktu oleh pengguna ke server di New York, untuk janji temu di Sanghai. Sekarang ketika pengguna terhubung di Sanghai, ia mengakses cap waktu janji temu yang sama dari server cermin di Tokyo. Dia akan melihat penunjukan di waktu Tokyo, diimbangi dari waktu New York yang asli.

Jadi untuk nilai-nilai yang mewakili waktu pengguna seperti janji temu atau jadwal, datetime lebih baik. Ini memungkinkan pengguna untuk mengontrol tanggal dan waktu persis yang diinginkan, terlepas dari pengaturan server. Waktu yang disetel adalah waktu yang disetel, tidak terpengaruh oleh zona waktu server, zona waktu pengguna, atau oleh perubahan cara penghitungan daylight saving time (ya itu memang berubah).

Di sisi lain, untuk nilai yang mewakili waktu sistem seperti transaksi pembayaran, modifikasi tabel atau pencatatan, selalu gunakan cap waktu. Sistem tidak akan terpengaruh dengan memindahkan server ke zona waktu lain, atau saat membandingkan antara server di zona waktu yang berbeda.

Stempel waktu juga lebih ringan pada basis data dan diindeks lebih cepat.

Setelah membahas tipe data string dan integer kali ini penulis akan membahas mengenai tipe data date (tanggal) pada mysql. Tipe data date digunakan untuk menyimpan data dengan format tanggal dan waktu dimana pada tipe data date sendiri ada beberapa tipe, seperti pada tabel berikut:

Tipe Data Keterangan Jangkauan Ukuran
Date Menympan data tanggal dengan format YYYY-MM-DD 1000-01-01 s/d 9999-12-31 3 byte
Time Menyimpan data waktu dengan format HH:MM:SS -838:59:59 s/d +838:59:59 3 byte
Year Menyimpan data tahun 1900 s/d 2155 1 byte
Datetime Menyimpan data tanggal dan waktu ‘1000-01-01 00:00:00’ s/d ‘9999-12-31 23:59:59’ 8 byte
Timestamp Menyimpan data tanggal dan waktu ‘1970-01-01 00:00:00’ s/d ‘2038-01-18 22:14:07’ 4 byte

Bentuk umum / format date untuk mendefinisikan kolom dengan tipe data date, time, year, dan datetime adalah sebagai berikut:

create table nama_tabel (kolom_1 date, kolom_2 year, kolom_3 time, kolom_N datetime) 0 row(s) affected 0.250 sec

Sementara bentuk umum / format untuk menyimpan data tanggal dan waktu terkini pada kolom dengan tipe data date, time, year dan datetime adalah sebagai berikut:

insert into tanggal values (NOW(), NOW(), NOW(), NOW()) 1 row(s) affected, 1 warning(s): 1292 Incorrect date value: '2021-04-23 23:32:56' for column 'kolom_1' at row 1 0.016 sec insert into tanggal values (curdate(), current_date(), curtime(), current_timestamp()) 1 row(s) affected 0.000 sec insert into tanggal values (curdate(), NOW(), curdate(), curdate()) 1 row(s) affected 0.125 sec

Pada contoh diatas penggunaan now() adalah untuk menyimpan data tanggal dan waktu berdasarkan waktu saat ini, selain now kita juga bisa menggunakan perintah curdate dan curtime. Lalu apa bedanya penggunaan now() dan curdate()? Untuk menjawab hal tersebut dapat melihat hasilnya sebagai berikut:

select * from tanggal +------------+---------+----------+---------------------+ | kolom_1 | kolom_2 | kolom_3 | kolom_4 | +------------+---------+----------+---------------------+ | 2021-04-24 | 2021 | 08:06:06 | 2021-04-24 08:06:06 | | 2021-04-24 | 2021 | 08:06:09 | 2021-04-24 08:06:09 | | 2021-04-24 | 2021 | 00:00:00 | 2021-04-24 00:00:00 | +------------+---------+----------+---------------------+ 3 rows in set 0.000 sec

Perbedaan antara fungsi now() dan curdate() yaitu terletak pada waktu, dimana fungsi now() dapat menyimpan tanggal dan waktu, sementara curdate() hanya menyimpan data tanggal saja, untuk itu kita bisa menggunakan curtime jika hanya ingin menyimpan data waktu saja. Pada penggunaan now(), curdate() dan curtime() perlu di akhiri dengan tanda kurung buka-tutup. Selain itu mysql juga menyediakan perintah sinonim / persamaan fungsi dengan now, curdate dan curtime, yakni:

  • curdate()
    • current_date dan current_date() merupakan sinonim dari curdate()
  • curtime()
    • current_time dan current_time() merupakan sinonim dari curtime()
  • current_timestamp dan current_timestamp() merupakan sinonim dari now()

Selain menggunakan fungsi now() dan current, kita juga dapat menyimpan data tanggal dan waktu di mysql berdasarkan tanggal / waktu tertentu seperti berikut ini:

insert into tanggal values ("1995-05-05", "1995", "13:19:20", "1995-12-25 13:19:20") 1 row(s) affected 0.000 sec insert into tanggal values (str_to_date("25-05-1995", "%d-%m-%Y"), "1995", "13:19:20", "1995-12-25 13:19:20") 1 row(s) affected 0.016 sec select * from tanggal; +------------+---------+----------+---------------------+ | kolom_1 | kolom_2 | kolom_3 | kolom_4 | +------------+---------+----------+---------------------+ | 2021-04-24 | 2021 | 08:06:06 | 2021-04-24 08:06:06 | | 2021-04-24 | 2021 | 08:06:09 | 2021-04-24 08:06:09 | | 2021-04-24 | 2021 | 00:00:00 | 2021-04-24 00:00:00 | | 1995-05-05 | 1995 | 13:19:20 | 1995-12-25 13:19:20 | | 1995-05-25 | 1995 | 13:19:20 | 1995-12-25 13:19:20 | +------------+---------+----------+---------------------+ 5 rows in set (0.00 sec)

Pada contoh diatas kita dapat menggunakan fungsi str_to_date yakni berfungsi untuk merubah format tanggal yang di input sesuai dengan yang diinginkan namun data yang tersimpan masih tetap dengan format default. Lalu bagaimana jika ingin menampilkan data tanggal pada mysql dengan format tertentu seperti dengan format d-m-Y atau hari-bulan-tahun? Berikut ini format dan contohnya:

select date_format(nama_kolom, ekspresi) from nama_tabel;

mysql> select date_format (kolom_1, "%d %M, %Y") as K1, kolom_2, kolom_3, date_format (kolom_4, "%d %M, %Y %H:%i:%s WIB") as K4 from tanggal; +----------------+---------+----------+--------------------------------+ | K1 | kolom_2 | kolom_3 | K4 | +----------------+---------+----------+--------------------------------+ | 24 April, 2021 | 2021 | 08:06:06 | 24 April, 2021 08:06:06 WIB | | 24 April, 2021 | 2021 | 08:06:09 | 24 April, 2021 08:06:09 WIB | | 24 April, 2021 | 2021 | 00:00:00 | 24 April, 2021 00:00:00 WIB | | 05 May, 1995 | 1995 | 13:19:20 | 25 December, 1995 13:19:20 WIB | | 25 May, 1995 | 1995 | 13:19:20 | 25 December, 1995 13:19:20 WIB | +----------------+---------+----------+--------------------------------+ 5 rows in set (0.00 sec) select date_format (kolom_1, "%W, %d %M, %Y") as K1, kolom_2, kolom_3, date_format (kolom_4, "%d %M, %Y %H:%i:%s WIB") as K4 from tanggal; +--------------------------+---------+----------+--------------------------------+ | K1 | kolom_2 | kolom_3 | K4 | +--------------------------+---------+----------+--------------------------------+ | Saturday, 24 April, 2021 | 2021 | 08:06:06 | 24 April, 2021 08:06:06 WIB | | Saturday, 24 April, 2021 | 2021 | 08:06:09 | 24 April, 2021 08:06:09 WIB | | Saturday, 24 April, 2021 | 2021 | 00:00:00 | 24 April, 2021 00:00:00 WIB | | Friday, 05 May, 1995 | 1995 | 13:19:20 | 25 December, 1995 13:19:20 WIB | | Thursday, 25 May, 1995 | 1995 | 13:19:20 | 25 December, 1995 13:19:20 WIB | +--------------------------+---------+----------+--------------------------------+ 5 rows in set (0.00 sec)

Dari contoh diatas kita tidak dapat menggunakan perintah select * from sehingga harus memilih data pada kolom mana yang ingin diubah formatnya, selain itu kita juga dapat menampilkan data berdasarkan tanggal tertentu dengan mengganti kolom_1 dengan tertentu menggunakan format tanggal default yaitu tahun-bulan-tanggal seperti "1995-12-23" serta merubah format tanggal yang diinginkan dengan mengganti ekspresi yang di apit oleh tanda petik dua semisal menjadi "%d-%m-%Y". Dari contoh diatas juga masih menggunakan format inggris, lalu bagaimana jika ingin merubah dan membuat format tanggal default mysql menjadi format tanggal indonesia? Berikut ini caranya:

set lc_time_names = "id_ID"; Query OK, 0 rows affected (0.04 sec) select date_format (kolom_1, "%W, %d %M, %Y") as K1, kolom_2, kolom_3, date_format (kolom_4, "%d %M, %Y %H:%i:%s WIB") as K4 from tanggal; +-----------------------+---------+----------+--------------------------------+ | K1 | kolom_2 | kolom_3 | K4 | +-----------------------+---------+----------+--------------------------------+ | Sabtu, 24 April, 2021 | 2021 | 08:06:06 | 24 April, 2021 08:06:06 WIB | | Sabtu, 24 April, 2021 | 2021 | 08:06:09 | 24 April, 2021 08:06:09 WIB | | Sabtu, 24 April, 2021 | 2021 | 00:00:00 | 24 April, 2021 00:00:00 WIB | | Jumat, 05 Mei, 1995 | 1995 | 13:19:20 | 25 Desember, 1995 13:19:20 WIB | | Kamis, 25 Mei, 1995 | 1995 | 13:19:20 | 25 Desember, 1995 13:19:20 WIB | +-----------------------+---------+----------+--------------------------------+ 5 rows in set (0.00 sec)

Dari contoh diatas untuk menampilkan data dengan format tanggal dan waktu indonesia adalah dengan mengeksekusi query set lc_time_names = "id_ID"; terlebih dahulu yang berfungsi untuk merubah zona waktu lokal server dengan begitu kita dapat menampilkan data dengan format waktu indonesia namun akan kembali ke pengaturan default menggunakan format inggris setiap kali menutup terminal / command line, sementara perintah yang digunakan untuk memeriksa zona waktu yang digunakan server adalah select @@lc_time_names;. Berikut ini adalah sejumlah parameter ekspresi yang dapat digunakan untuk menampilkan data tanggal dan waktu pada mysql:

Parameter Deskripsi
%a Penyingkatan nama hari (Sun..Sat)
%b Penyingkatan nama bulan (Jan..Dec)
%c Bulan, dalam angka (0..12)
%D Hari dalam sebulan dengan format akhiran inggris (0th, 1st, 2nd, 3rd, …)
%d Hari dalam sebulan, format desimal (00..31)
%e Hari dalam sebulan, format bilangan bulat (0..31)
%f Microseconds (000000..999999)
%H Jam (00..23)
%h Jam (01..12)
%I Jam (01..12)
%i Menit, format angka (00..59)
%j Hari dalam satu tahun (001..366)
%k Jam (0..23)
%l Jam (1..12)
%M Nama bulan (January..December)
%m Bulan, dalam format angka (00..12)
%p Waktu dalam format AM atau  PM
%r Waktu, format 12 jam (hh:mm:ss diikuti dengan AM atau PM)
%S Detik (00..59)
%s Detik (00..59)
%T Waktu, format 24 jam (hh:mm:ss)
%U Minggu (00..53), dimana minggu adalah hari pertama dalam sepekan; WEEK() mode 0
%u Minggu (00..53), dimana senin adalah hari pertama dalam sepekan; WEEK() mode 1
%V Minggu (01..53), dimana minggu adalah hari pertama dalam sepekan; WEEK() mode 2; used with %X
%v Minggu (01..53), dimana senin adalah hari pertama dalam sepekan; WEEK() mode 3; used with %x
%W Nama hari kerja (Sunday..Saturday)
%w Hari kerja dalam format angka (0=Sunday..6=Saturday)
%X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V
%x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v
%Y Tahun dalam 4 digit
%y Tahun dalam 2 digit
%% A literal % character
%x x, for any x not listed above

TIMESTAMP() dan CURRENT_TIMESTAMP

Tipe data date pada mysql juga menyediakan tipe data timestamp dengan atribut current_timestamp untuk menginput maupun memperbaharui data tanggal dan waktu secara otomatis dimana biasanya digunakan sebagai penanda, contohnya seperti berikut:

create table tanggal (id int, timestem timestamp not null default current_timestamp, timestem2 timestamp not null default current_timestamp on update current_timestamp) 0 row(s) affected 0.046 sec insert into tanggal (id) values (1), (2), (3) 3 row(s) affected Records: 3 Duplicates: 0 Warnings: 0 0.016 sec select * from tanggal; +------+---------------------+---------------------+ | id | timestem | timestem2 | +------+---------------------+---------------------+ | 1 | 2021-04-24 08:14:08 | 2021-04-24 08:14:08 | | 2 | 2021-04-24 08:14:08 | 2021-04-24 08:14:08 | | 3 | 2021-04-24 08:14:08 | 2021-04-24 08:14:08 | +------+---------------------+---------------------+ 3 rows in set (0.00 sec) update tanggal set id = 5 where id = 1 Query OK, 1 row affected (0.17 sec) Rows matched: 1 Changed: 1 Warnings: 0 select * from tanggal; +------+---------------------+---------------------+ | id | timestem | timestem2 | +------+---------------------+---------------------+ | 5 | 2021-04-24 08:14:08 | 2021-04-24 08:14:25 | | 2 | 2021-04-24 08:14:08 | 2021-04-24 08:14:08 | | 3 | 2021-04-24 08:14:08 | 2021-04-24 08:14:08 | +------+---------------------+---------------------+ 3 rows in set (0.00 sec)

Untuk menggunakan timestamp sehingga dapat menginput data tanggal dan waktu secara otomatis maka perlu menggunakan atribut not null dan default selain itu jika ingin memperbaharui data tanggal dan waktu secara otomatis saat memodifikasi data maka diperlukan atribut on update. Biasanya contoh paling umum penggunaan time_stamp adalah saat membuat user baru pada sebuah aplikasi yang tengah dikembangkan, dengan menyimpan data registrasi dan menyimpan data saat terakhir kali melakukan perubahan informasi dari akun user.

Tipe data dalam MySQL yang digunakan untuk data tanggal dan waktu adalah

Sampai disini pembahasan tipe data date pada mysql sudah selesai, jika ada pertanyaan, jangan sungkan untuk bertanya melalui kolom komentar. Untuk mempelajari pembahasan lainnya silahkan lihat daftar isi melalui menu Programming > MySQL > Daftar Isi belajar MySQL.

  • mysql date
  • mysql date format
  • mysql format date
  • mysql date_format
  • mysql date now
  • date mysql
  • date in mysql
  • date format mysql
  • date mysql format
  • str to date mysql