MySQL secara default tidak memiliki format hari dan tanggal bahasa Indonesia. Apabila menginginkan format seperti : (Rabu, 7 Juni 2017), maka dapat menggunakan Query di bawah ini :

Query SQL :

SELECT CONCAT(
  CASE DAYOFWEEK(NOW())
    WHEN 1 THEN 'Minggu'
    WHEN 2 THEN 'Senin'
    WHEN 3 THEN 'Selasa'
    WHEN 4 THEN 'Rabu'
    WHEN 5 THEN 'Kamis'
    WHEN 6 THEN 'Jumat'
    WHEN 7 THEN 'Sabtu'
  END,', ',
  DAY(NOW()),' ',
  CASE MONTH(NOW()) 
    WHEN 1 THEN 'Januari' 
    WHEN 2 THEN 'Februari' 
    WHEN 3 THEN 'Maret' 
    WHEN 4 THEN 'April' 
    WHEN 5 THEN 'Mei' 
    WHEN 6 THEN 'Juni' 
    WHEN 7 THEN 'Juli' 
    WHEN 8 THEN 'Agustus' 
    WHEN 9 THEN 'September'
    WHEN 10 THEN 'Oktober' 
    WHEN 11 THEN 'November' 
    WHEN 12 THEN 'Desember' 
  END,' ',
  YEAR(NOW())
) AS tanggal;

Penjelasan Sistem Kerja Query SQL :

  1. Memanggil fungsi DAYOFWEEK untuk mengetahui hari sesuai dengan tanggal yang ditentukan, seperti contoh di atas menggunakan NOW() yang berarti sekarang(hari ini). Fungsi DAYOFWEEK akan menghasilkan angka antara 1-7 yang berarti Minggu-Sabtu, kemudian dikonversi ke dalam format Indonesia melalui perintah CASE
  2. Fungsi DAY(tanggal) untuk mengetahui tanggal(1-31)
  3. Fungsi MONTH(tanggal) untuk mengetahui bulan dalam bentuk angka (1-12) kemudian dikonversi ke dalam format Indonesia (Januari-Desember)
  4. Memanggil fungsi YEAR(tanggal) untuk mengetahui tahun
  5. Penggabungan poin 1-4

Penjelasan parameter :

  • NOW() : tanggal yang digunakan, dirubah sesuai kebutuhan

Jika ingin menjadikannya sebagai Function :

CREATE FUNCTION sf_formatTanggal(tanggal DATE)
  RETURNS VARCHAR(255) DETERMINISTIC
BEGIN
  DECLARE varhasil varchar(255);

  SELECT CONCAT(
    CASE DAYOFWEEK(tanggal)
      WHEN 1 THEN 'Minggu'
      WHEN 2 THEN 'Senin'
      WHEN 3 THEN 'Selasa'
      WHEN 4 THEN 'Rabu'
      WHEN 5 THEN 'Kamis'
      WHEN 6 THEN 'Jumat'
      WHEN 7 THEN 'Sabtu'
    END,', ',
    DAY(tanggal),' ',
    CASE MONTH(tanggal) 
      WHEN 1 THEN 'Januari' 
      WHEN 2 THEN 'Februari' 
      WHEN 3 THEN 'Maret' 
      WHEN 4 THEN 'April' 
      WHEN 5 THEN 'Mei' 
      WHEN 6 THEN 'Juni' 
      WHEN 7 THEN 'Juli' 
      WHEN 8 THEN 'Agustus' 
      WHEN 9 THEN 'September'
      WHEN 10 THEN 'Oktober' 
      WHEN 11 THEN 'November' 
      WHEN 12 THEN 'Desember' 
    END,' ',
    YEAR(tanggal)
  ) INTO varhasil;

  RETURN varhasil;
END

Penjelasan parameter :

  • tanggal : tanggal yang ingin dijadikan format Indonesia
  • varhasil : penampung hasil

Cara pemanggilan Function di atas :

SELECT sf_formatTanggal(NOW());
/* atau */
SELECT sf_formatTanggal(STR_TO_DATE('2016-12-31','%Y-%m-%d'));

Bayu Kandukeswara

Leave a Reply

Your email address will not be published. Required fields are marked *