Cara menyimpan tanggal ke database mysql

Saat mengawali belajar MySQL dulu, saya dipusingkan dengan banyaknya format tanggal dan bagaimana seharusnya tanggal disimpan di database. Sampai akhirnya saya menemukan cara yang terbaik buat saya, dan tetap saya gunakan sampai sekarang.

Umumnya tanggal di MySQL disimpan dengan tipe datetime. CMS populer seperti WordPress menggunakan datetime. Ada juga yang menyimpan tanggal sebagai INT dengan format Unix Timestamp, seperti 1234567890. Kelebihan tipe data INT adalah proses pengambilan data lebih cepat (WHERE date = 1234567890).

Kelebihan lain menggunakan menggunakan INT, tanggal yang berupa Unix Timestamp tersebut sekaligus dapat digunakan sebagai id dengan luwes. Jika digunakan di URL kira-kira seperti berikut:

  1. http://example.com/artikel/1234567890 
    

Namun angka tersebut tidak human readable, dan memiliki kekurangan tidak memiliki lebar konsisten, dll. Untuk itu saya memikirkan cara lain yang lebih baik tetapi masih dengan kelebihan diatas. Akhirnya saya gunakan format 20180705081400. Tidak cukup menggunakan INT, maka harus disimpan dengan tipe BIGINT. Dengan format tersebut, lebar integer akan tetap 14 digit hingga tahun 9999. Sehingga memudahkan sisi programming.

Yang menarik adalah, format 14 digit tetap dengan mudah bisa dikonversi ke format lain.

  1. <?php 
  2.  
  3. $time = strtotime('20180705081400'); 

Hal ini sepertinya tidak terdokumentasi di php.net, sehingga jarang yang menggunakannya.

Dari sisi query MySQL, operator < (kurang dari) maupun > (lebih dari) juga dapat bekerja dengan baik dan sesuai harapan.

Tip: Selalu simpan tanggal dengan timezone UTC (GMT+0000).

gan kan cerita nya saya lagi bikin kaya form pendaftaran nih yah terus saya pingin di halaman adminnya ada tanggal bulan tahun dan jam pada saat member itu daftar gimana yah cara nya supaya jam pendaftaran nya itu tersimpan di database saya menggunakan php? mohon jawabannya

@hafizdjubaidir

110 Kontribusi 1 Poin

Dipost: 4 tahun yang lalu Update 2 tahun yang lalu


Jawaban

ini contoh nya tinggal diubah aja sesuai keinginan

 $query = "insert into user(email,username,nama,password,date_register) values('$email','$username','$nama','$password','".date("  Y-m-d H:i:s")."')"; 

Cara menyimpan tanggal ke database mysql

@stefanuspn

250 Kontribusi 69 Poin

Dipost: 4 tahun yang lalu


kalo saya sih bikin column baru di table databasenya contoh kyk gini

Cara menyimpan tanggal ke database mysql
dan cara ini setiap kali ada pendaftaran otomatis tanggal uda tercatat semoga membantu

@naufalhfzhn

170 Kontribusi 58 Poin

Dipost: 4 tahun yang lalu Update 4 tahun yang lalu


 date("d-m-Y G:i:s") 

hasilnya 11-10-2017 16:14:30

@Jauhary

37 Kontribusi 12 Poin

Dipost: 4 tahun yang lalu


ok gan terima kasih udah di jawab nanti saya coba dulu yah


Login untuk gabung berdiskusi

Tutorial Belajar MySQL Part 15: Tipe Data Date (Tanggal) dalam MySQL

20 Oct 12 | | Tutorial MySQL | |

Cara menyimpan tanggal ke database mysql

Jika pada tutorial sebelumnya kita mempelajari Tipe Data Numerik MySQL dan Tipe Data Huruf (String) MySQL, tipe data selanjutnya yang tersedia dalam MySQL adalah tipe data date (tanggal), tipe data ini digunakan untuk menyimpan data yang berkaitan dengan tanggal dan waktu. Tipe data date, terdiri dari: DATE, TIME, DATETIME, TIMESTAMP, dan YEAR.

Dalam tutorial kali ini kita akan membahas secara lebih detail tentang tipe data date (tanggal) di dalam MySQL.


Jenis tipe data DATE dalam MySQL

MySQL memiliki beberapa format untuk tipe data date. Format tipe data date tersebut adalah: DATE, TIME, DATETIME, TIMESTAMP, dan YEAR. Perbedaan dari tipe-tipe tersebut terletak pada format penyimpanan data. Untuk lebih lengkapnya dapat dilihat dari tabel dibawah ini:

Tipe DataJangkauanUkuranZero Value
DATE ‘1000-01-01’ to ‘9999-12-31’ 3 byte ‘0000-00-00’
DATETIME ‘1000-’01-01 00:00:01’ to ‘9999-12-31 23:59:59’ 8 byte ‘0000-00-00 00:00:00’
TIMESTAMP ‘1970-01-01 00:00:00’ to ‘2038-01-18 22:14:07’ 4 byte ‘0000-00-00 00:00:00’
TIME ‘–838:59:59’ to ‘838:59:58’ 3 byte ‘00:00:00’
YEAR(2) 00 to 99 1 byte ‘00’
YEAR(4) 1901 to 2155 1 byte ‘0000’

MySQL menyediakan beberapa format yang dapat digunakan untuk input tipe data tanggal, masing masing untuk tipe data yang bersesuaian.

Tipe DataFomat Input
DATETIME 'CCYY-MM-DD hh:mm:ss'
TIMESTAMP 'YY-MM-DD hh:mm:ss'
'CCYYMMDDhhmmss'
'YYMMDDhhmmss'
CCYYMMDDhhmmss
YYMMDDhhmmss
DATE 'CCYY-MM-DD'
'YY-MM-DD'
'CCYYMMDD'
'YYMMDD'
CCYYMMDD
YYMMDD
TIME 'hh:mm:ss'
'hhmmss'
hhmmss
YEAR 'CCYY'
'YY'
CCYY
YY
  • CCYY : input untuk tahun, dimana YY berupa tahun 2 digit, seperti 98, 78, dan 00, sedangkan untuk CCYY adalah tahun dengan 4 digit, seperti 2001, 1987, 2012. Untuk tahun dengan 2 digit, MySQL mengkonversinya dengan aturan 70-99 menjadi 1970-1999 dan 00-69 menjadi 2000-2069.
  • MM: bulan dalam format dua digit, seperti 05,07,dan 12.
  • DD: tanggal dalam format dua digit, seperti 14, 06 dan 30.
  • hh: jam dalam format 2 digit, seperti 06,09, dan 12.
  • mm: menit, dalam format 2 digit, seperti 15, 45, dan 59.
  • ss: detik, dalam format 2 digit, seperti 10, 40, dan 57.

Jika MySQL tidak dapat membaca format, atau data tidak tersedia, maka data akan diisi sesuai dengan nilai pada Zero Value.

Contoh query untuk membuat tabel dengan data DATE:

mysql> CREATE TABLE contoh_date (dat DATE, tim TIME, dattim DATETIME, 
timestam TIMESTAMP, yea YEAR);
Query OK, 0 rows affected (0.06 sec)

mysql> DESCRIBE contoh_date;
+----------+-----------+------+-----+-------------------+-----------------------------+
| Field    | Type      | Null | Key | Default           | Extra                       |
+----------+-----------+------+-----+-------------------+-----------------------------+
| dat      | date      | YES  |     | NULL              |                             |
| tim      | time      | YES  |     | NULL              |                             |
| dattim   | datetime  | YES  |     | NULL              |                             |
| timestam | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| yea      | year(4)   | YES  |     | NULL              |                             |
+----------+-----------+------+-----+-------------------+-----------------------------+
5 rows in set (0.01 sec)

Perhatikan pada saat mendefinisikan tipe data YEAR, pada query DESCRIBE kita dapat melihat bahwa MySQL memberikan nilai YEAR(4) sebagai nilai default. Kita dapat secara langsung mendefinisikan YEAR(2) jika menginginkan data tahun dengan 2 digit, namun hal ini tidak disarankan, karena dengan mendefinisikan tahun 26, akan menjadi ambigu, apakah itu tahun 1926 atau 2026, walaupun MySQL memiliki aturan akan mengkonversinya menjadi 2026.

MySQL menyediakan fungsi NOW() untuk memberikan tanggal server pada saat ini, dan kita akan menggunakannya sebagai nilai tiap kolom pada tabel contoh_date:

mysql> INSERT INTO contoh_date values (NOW(),NOW(),NOW(),NOW(),'2012');
Query OK, 1 row affected, 1 warning (0.05 sec)

mysql> SELECT * FROM contoh_date;
+------------+----------+---------------------+---------------------+------+
| dat        | tim      | dattim              | timestam            | yea  |
+------------+----------+---------------------+---------------------+------+
| 2012-10-20 | 19:40:45 | 2012-10-20 19:40:45 | 2012-10-20 19:40:45 | 2012 |
+------------+----------+---------------------+---------------------+------+
1 row in set (0.00 sec)

Khusus untuk tipe data YEAR, fungsi NOW() akan menghasilkan error, oleh karenanya, pada contoh diatas saya menginput manual ‘2012’ untuk kolom YEAR.


Tipe data date dalam MySQL bukanlah tipe data dasar, akan tetapi penggunaannya sangat umum dan sering sehingga MySQL menyediakan tipe data tanggal secara bawaan. Dalam tutorial belajar MySQL selanjutnya, kita akan membahas tentang tipe data bentukan MySQL: enum dan set, serta perbedaan keduanya.

Apa itu timestamp di MySQL?

Fungsi TIMESTAMP() digunakan untuk dapat mengembalikan nilai datetime berdasarkan tanggal atau nilai datetime.

Apakah format umum dari tipe date?

Tipe data Date digunakan untuk menyimpan tanggal. Secara umum penyimpanan tipe data date dengan format Y-m-d / Tahun-Bulan-Tanggal, artinya dari tahun ke bulan dengan pemisah tanda (-).

Apa itu tipe data datetime?

Tipe data dateTime digunakan untuk menentukan tanggal dan waktu. DateTime ditentukan dalam format berikut “YYYY-MM-DDThh: mm: ss” di mana: YYYY menunjukkan tahun. MM menunjukkan bulan.

Perintah apa yang digunakan untuk mendapatkan nilai waktu sekarang pada MySQL?

now() Fungsi now() digunakan untuk menampilkan tanggal dan waktu sekarang. Catatan : MySQL memiliki format tanggal “Y-m-d” atau “Year-Month-Date“. Jika Anda memiliki data 2 April 2013, maka di dalam MySQL akan ditulis 2013-04-02.