Tutorial Belajar MySQL Part 15: Tipe Data Date (Tanggal) dalam 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 991 byte‘00’
YEAR(4)1901 to 21551 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.

40 Comments

  1. Anonymous
    06 May 14
    • Anonymous
      12 Oct 23
  2. Sudiyanto
    27 Apr 15
    • Anonymous
      12 Oct 23
  3. Arsyad
    27 Jun 15
  4. sususakti
    19 Dec 15
  5. Ibas
    16 Jan 16
  6. Noer Kusuma Sari
    05 Apr 16
  7. Ade
    17 Jun 16
  8. Preman Teknologi
    21 Jul 16
    • Andre
      22 Jul 16
    • Andre
      28 Sep 16
      • Adhi
        23 Dec 16
  9. arga
    29 Oct 16
    • Andre
      30 Oct 16
  10. nur fauziah
    12 Nov 16
    • Andre
      13 Nov 16
  11. anto
    10 Feb 17
    • Andre
      11 Feb 17
  12. JONI
    23 Feb 17
    • Andre
      24 Feb 17
  13. Ayub
    21 Mar 17
    • Anonymous
      12 Oct 23
  14. lalada
    25 Mar 17
    • Andre
      26 Mar 17
  15. iin
    13 Jul 17
    • Andre
      14 Jul 17
  16. Anonymous
    26 Nov 17
    • Andre
      26 Nov 17
  17. Mulyadi
    05 May 18
    • Andre
      05 May 18
  18. Riyadi
    09 Sep 18
  19. bbsans
    24 Oct 18
    • Andre
      26 Oct 18
  20. satria ramadanol
    10 Feb 20
  21. dayat
    14 Feb 20
  22. Aan Wasi
    27 Oct 20
  23. santo putra
    16 May 21

Add Comment