Timestamp Saat Ini MySQL: Cara Mendapatkan Tanggal dan Waktu Sekarang (NOW, SYSDATE, UTC_TIMESTAMP)

目次

1. Introduction

Mendapatkan waktu saat ini di MySQL adalah bagian penting dari manajemen basis data.
Misalnya, Anda mungkin perlu mengambil waktu saat ini dalam situasi seperti berikut:

  • Merekam stempel waktu pembuatan secara otomatis saat memasukkan data (misalnya, stempel waktu ketika pengguna baru mendaftar)
  • Mencatat waktu masuk pengguna (misalnya, mengelola riwayat masuk)
  • Mengambil data dalam rentang waktu tertentu (misalnya, mengambil riwayat pesanan dari 24 jam terakhir)
  • Merekam log eksekusi sistem (misalnya, mengelola log kesalahan dan log peristiwa)

Seperti yang Anda lihat, mengambil “waktu saat ini” dengan tepat untuk manajemen data dan pencatatan sangat penting untuk mengoperasikan basis data.

Dalam artikel ini, kami akan menjelaskan cara mendapatkan waktu saat ini di MySQL secara detail menggunakan kueri SQL nyata.
Kami juga akan membahas perbedaan antara fungsi yang umum digunakan, cara memilih yang tepat, dan contoh kueri praktis—berguna bagi pemula hingga pengguna menengah.

2. MySQL Functions to Get the Current Date/Time (Comparison Table)

MySQL menyediakan beberapa fungsi untuk mengambil waktu saat ini.
Memilih fungsi yang tepat untuk kasus penggunaan Anda penting, tetapi banyak orang menemukan perbedaannya membingungkan.

Di bagian ini, kami membandingkan fungsi utama yang digunakan untuk mendapatkan tanggal/waktu saat ini di MySQL dan menjelaskan karakteristiknya secara detail.

2.1 Comparison Table of MySQL Time Functions

FunctionWhat it returnsFormatNotes
NOW()Current date and timeYYYY-MM-DD HH:MM:SSMost commonly used
SYSDATE()Date and time at executionYYYY-MM-DD HH:MM:SSUnlike NOW(), it can change on each execution
CURTIME()Current timeHH:MM:SSTime only (no date)
CURRENT_TIME()Current timeHH:MM:SSSame as CURTIME()
CURRENT_TIMESTAMP()Current date and timeYYYY-MM-DD HH:MM:SSAlmost the same as NOW()
UTC_TIMESTAMP()Current UTC date and timeYYYY-MM-DD HH:MM:SSTime zone is fixed to UTC

Dari tabel di atas, sebagian besar fungsi mengembalikan baik “tanggal dan waktu saat ini” maupun “waktu saat ini,” tetapi fungsi terbaik tergantung pada tujuan Anda.

2.2 Overview and Characteristics of Each Function

NOW() Function

  • Fungsi paling umum untuk mendapatkan tanggal dan waktu saat ini
  • Mengembalikan waktu pada saat pernyataan SQL dimulai
  • Sering digunakan untuk stempel waktu saat memasukkan atau memperbarui data
    SELECT NOW();
    

Contoh output

2025-02-14 15:30:45

SYSDATE() Function

  • Mengambil waktu saat ini pada saat eksekusi
  • Berbeda dengan NOW(), SYSDATE() dapat mengembalikan nilai yang berbeda setiap kali dievaluasi (bisa berubah bahkan dalam satu transaksi)
    SELECT SYSDATE();
    

Contoh output

2025-02-14 15:30:47

CURTIME() Function

  • Mengambil hanya waktu (HH:MM:SS)
  • Berguna ketika tanggal tidak diperlukan
    SELECT CURTIME();
    

Contoh output

15:30:45

CURRENT_TIME() Function

  • Berfungsi sama seperti CURTIME()
  • Nama fungsi sesuai dengan standar SQL
    SELECT CURRENT_TIME();
    

Contoh output

15:30:45

CURRENT_TIMESTAMP() Function

  • Berperilaku seperti NOW()
  • Dapat ditentukan sebagai nilai DEFAULT kolom (sering lebih tepat daripada NOW() untuk nilai default)
    SELECT CURRENT_TIMESTAMP();
    

Contoh output

2025-02-14 15:30:45

Set as a default value when creating a table:

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

UTC_TIMESTAMP() Function

  • Mengambil UTC (Coordinated Universal Time) saat ini
  • Tidak bergantung pada zona waktu server, memungkinkan stempel waktu yang konsisten
    SELECT UTC_TIMESTAMP();
    

Contoh output

2025-02-14 06:30:45

2.3 Which Function Should You Use?

Use caseRecommended function
Get the current date and timeNOW()
Get a different timestamp each time within a transactionSYSDATE()
Need only the current time (HH:MM:SS)CURTIME() or CURRENT_TIME()
Set as a table default valueCURRENT_TIMESTAMP()
Get UTC timeUTC_TIMESTAMP()

Secara umum, untuk pengambilan tanggal/waktu tipikal, NOW() biasanya merupakan pilihan yang tepat.
Namun, memilih fungsi terbaik untuk kasus penggunaan Anda memungkinkan operasi data yang lebih fleksibel dan dapat diandalkan.

3. NOW() Function Details

Fungsi MySQL NOW() adalah fungsi yang paling umum digunakan untuk mendapatkan tanggal dan waktu saat ini (tanggal + waktu).
Fungsi ini banyak digunakan untuk menyimpan stempel waktu di basis data dan mengambil data dalam rentang waktu tertentu.

3.1 Basic Usage of NOW()

Syntax of NOW()

SELECT NOW();

Example output

2025-02-14 15:30:45
  • Format output adalah YYYY-MM-DD HH:MM:SS (tahun-bulan-hari jam:menit:detik).
  • Waktu diambil berdasarkan pengaturan zona waktu default MySQL.

3.2 Kasus Penggunaan Umum untuk NOW()

① Catat waktu saat ini saat memasukkan data

Saat memasukkan data ke dalam basis data, Anda dapat menggunakan NOW() untuk mencatat timestamp pembuatan.

INSERT INTO users (name, created_at) VALUES ('Sato', NOW());

② Catat waktu saat ini saat memperbarui data

UPDATE users SET last_login = NOW() WHERE id = 1;

③ Ambil data dari periode waktu tertentu

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
  • Dengan menentukan INTERVAL 1 DAY, Anda dapat mengambil “data dari 1 hari terakhir.”

3.3 Tipe Pengembalian dan Cara Mengubah Format Output

Tipe pengembalian NOW()

  • tipe DATETIME ( YYYY-MM-DD HH:MM:SS )
  • Bisa juga diperlakukan sebagai string
    SELECT NOW(), typeof(NOW());
    

Cara mengubah format

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_time;

Contoh output

2025-02-14 15:30:45

3.4 Perbedaan Antara NOW() dan SYSDATE()

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeCan return different timestamps within the same statement
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();

Contoh output

NOW()        | SLEEP(3) | NOW()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:45
SYSDATE()    | SLEEP(3) | SYSDATE()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:48

🚨 Jika Anda bekerja dengan transaksi, NOW() disarankan untuk konsistensi.

3.5 Batasan dan Catatan untuk NOW()

① Bergantung pada zona waktu

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

② Untuk nilai default tabel, gunakan CURRENT_TIMESTAMP

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3.6 Ringkasan NOW()

  • NOW() adalah fungsi paling umum untuk mendapatkan tanggal dan waktu saat ini di MySQL.
  • Dapat digunakan untuk insert, update, dan mengambil data berbasis waktu.
  • Gunakan NOW() ketika Anda membutuhkan timestamp yang konsisten dalam sebuah transaksi.
  • SYSDATE() mengembalikan waktu yang berbeda pada setiap evaluasi, jadi gunakan ketika Anda membutuhkan waktu eksekusi yang tepat.
  • Gunakan CONVERT_TZ() untuk mengambil waktu dalam zona waktu yang berbeda.

📌 Kesimpulan: Dalam kebanyakan kasus, NOW() adalah pilihan terbaik untuk mendapatkan tanggal dan waktu saat ini di MySQL.

4. Karakteristik Fungsi SYSDATE()

Fungsi SYSDATE() adalah cara lain untuk mendapatkan tanggal dan waktu saat ini di MySQL, tetapi perilakunya berbeda dari NOW().
Pada bagian ini, kami akan menjelaskan penggunaan dasar SYSDATE(), bagaimana perbedaannya dengan NOW(), dan catatan penting.

4.1 Apa Itu SYSDATE()?

SYSDATE() adalah fungsi yang mengembalikan waktu pada saat pernyataan dieksekusi.
Berbeda dengan NOW(), ia mengembalikan timestamp yang berbeda setiap kali dievaluasi.

Sintaks SYSDATE()

SELECT SYSDATE();

Contoh output

2025-02-14 16:00:45
  • Dikembalikan dalam format YYYY-MM-DD HH:MM:SS
  • Mewakili momen ketika query dieksekusi

4.2 Perbedaan Antara SYSDATE() dan NOW()

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeReturns a different timestamp each time

Perbandingan perilaku: NOW() vs SYSDATE()

SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();

Contoh output

NOW()        | SLEEP(3) | NOW()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:45
SYSDATE()    | SLEEP(3) | SYSDATE()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:48

📌 Poin penting

  • NOW() menjaga timestamp sejak awal pernyataan, jadi tidak berubah.
  • SYSDATE() mengembalikan timestamp yang berbeda setiap kali dievaluasi, jadi berubah setelah 3 detik.

🚨 Gunakan NOW() untuk pemrosesan transaksi

  • Karena SYSDATE() dapat berperilaku berbeda dari NOW() dalam lingkungan multi-thread, NOW() umumnya disarankan untuk konsistensi transaksi.

4.3 Contoh Penggunaan SYSDATE()

① Catat waktu saat ini saat menyisipkan data

INSERT INTO logs (event, created_at) VALUES ('User login', SYSDATE());

② Catat waktu saat ini saat memperbarui data

UPDATE users SET last_login = SYSDATE() WHERE id = 1;

③ Dapatkan waktu saat ini dalam format tertentu

SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s') AS formatted_time;

Contoh output

2025-02-14 16:05:30

4.4 Batasan dan Catatan untuk SYSDATE()

① Perilaku transaksi

  • NOW() menjaga timestamp sejak awal pernyataan , sehingga dapat digunakan secara konsisten dalam sebuah transaksi.
  • SYSDATE() mengembalikan timestamp yang berbeda setiap kali , sehingga drift waktu dapat terjadi dalam sebuah transaksi.

② Tidak dapat digunakan sebagai nilai DEFAULT

  • SYSDATE() tidak dapat diatur sebagai nilai DEFAULT kolom tabel .

Solusi: Gunakan DEFAULT CURRENT_TIMESTAMP.

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

4.5 Kapan Harus Menggunakan SYSDATE()?

Use caseRecommended function
Typical current timestamp retrievalNOW()
Use a consistent timestamp within a transactionNOW()
Need the exact execution timeSYSDATE()

🚀 SYSDATE() cocok untuk pencatatan real‑time, tetapi tidak ideal untuk pemrosesan transaksi.

4.6 Ringkasan SYSDATE()

  • SYSDATE() mengambil timestamp pada saat eksekusi, tidak seperti NOW().
  • Karena dapat menghasilkan nilai yang berbeda setiap kali, fungsi ini berguna untuk pencatatan real‑time.
  • Untuk konsistensi transaksi, disarankan menggunakan NOW().
  • Untuk nilai default, gunakan CURRENT_TIMESTAMP.

📌 Kesimpulan: Untuk pengambilan timestamp umum, NOW() adalah yang terbaik; untuk waktu eksekusi yang tepat, pilih SYSDATE().

5. CURTIME() dan CURRENT_TIME()

Ketika Anda ingin mendapatkan waktu saat ini di MySQL, CURTIME() dan CURRENT_TIME() digunakan ketika Anda hanya memerlukan waktu saja (HH:MM:SS).
Pada bagian ini, kami akan menjelaskan penggunaan dasar, perbedaan, dan contoh praktis untuk masing‑masing.

5.1 Apa Itu CURTIME()?

CURTIME() adalah fungsi yang mengambil waktu saat ini (jam, menit, detik) di MySQL.
Fitur utamanya adalah tidak menyertakan tanggal—hanya bagian waktu yang dikembalikan.

Sintaks CURTIME()

SELECT CURTIME();

Contoh output

16:30:45
  • Format: HH:MM:SS
  • Bergantung pada pengaturan zona waktu server
  • Tidak seperti NOW(), cocok ketika Anda tidak memerlukan informasi tanggal

5.2 Apa Itu CURRENT_TIME()?

CURRENT_TIME(), seperti CURTIME(), adalah fungsi yang mengambil waktu saat ini (HH:MM:SS).
Dalam praktiknya, fungsi ini berperilaku sama persis dengan CURTIME().

Sintaks CURRENT_TIME()

SELECT CURRENT_TIME();

Contoh output

16:30:45

📌 Apa perbedaannya?

  • CURTIME() bersifat khusus MySQL
  • CURRENT_TIME() mengikuti standar SQL
  • Keduanya berperilaku sama
  • Pilih berdasarkan preferensi keterbacaan (tidak ada perbedaan kinerja)

5.3 CURTIME() vs CURRENT_TIME() (Perbandingan)

FunctionWhat it returnsFormatNotes
CURTIME()Current time (hour/minute/second)HH:MM:SSMySQL-specific function
CURRENT_TIME()Current time (hour/minute/second)HH:MM:SSSQL-standard function

5.4 Contoh Praktis CURTIME() / CURRENT_TIME()

① Catat waktu saat ini saat menyisipkan data

INSERT INTO user_logs (event, event_time) VALUES ('Login', CURTIME());

② Penyaringan (ambil data dalam rentang waktu tertentu)

SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';

③ Ubah presisi (sertakan milidetik)

SELECT CURTIME(3);  -- Display up to 3 fractional digits

Contoh output

16:30:45.123

5.5 Batasan dan Catatan untuk CURTIME() / CURRENT_TIME()

① Tidak ada informasi tanggal, jadi gabungkan dengan tanggal bila diperlukan

SELECT CONCAT(CURDATE(), ' ', CURTIME()) AS full_datetime;

② Saat digunakan sebagai nilai DEFAULT

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event_time TIME DEFAULT CURTIME()
);

5.6 Kapan Harus Menggunakan CURTIME() / CURRENT_TIME()?

Use caseRecommended function
Need only the current time (hour/minute/second)CURTIME() or CURRENT_TIME()
Need current date and timeNOW()
Need millisecond precisionCURTIME(3)

📌 Dalam kebanyakan kasus, baik CURTIME() maupun CURRENT_TIME() berfungsi dengan baik.
Pilih yang Anda rasa lebih mudah dibaca.

5.7 Ringkasan CURTIME() / CURRENT_TIME()

  • CURTIME() bersifat khusus MySQL; CURRENT_TIME() adalah standar SQL
  • Keduanya mengambil waktu saat ini (HH:MM:SS)
  • Gunakan CURTIME(3) atau DATE_FORMAT() untuk menyesuaikan format/ketelitian
  • Jika Anda membutuhkan tanggal, gabungkan dengan CURDATE() atau gunakan NOW()
  • Untuk nilai default, CURRENT_TIMESTAMP biasanya digunakan

📌 Kesimpulan: Jika Anda hanya membutuhkan waktu saat ini, CURTIME() adalah pilihan yang solid.

6. Contoh Query Praktis Menggunakan Waktu Saat Ini

Sekarang Anda telah memahami cara mengambil waktu saat ini di MySQL, mari kita lihat cara praktis menggunakannya.
Di bagian ini, kami akan memperkenalkan contoh query dunia nyata menggunakan waktu saat ini.
Anda akan mempelajari teknik yang berguna untuk tugas basis data sehari-hari seperti insert, update, dan pencarian.

6.1 Catat waktu saat ini saat memasukkan data

① Catat waktu saat ini ketika pengguna mendaftar

INSERT INTO users (name, email, created_at) 
VALUES ('Sato', 'sato@example.com', NOW());

6.2 Catat waktu saat ini saat memperbarui data

② Catat timestamp login terakhir pengguna

UPDATE users SET last_login = NOW() WHERE id = 1;

6.3 Ambil data dari N hari terakhir

③ Ambil data pesanan dari 7 hari terakhir

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;

6.4 Ambil data yang dibuat dalam rentang waktu tertentu

④ Ambil data yang dibuat hari ini antara pukul 09:00 dan 18:00

SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';

6.5 Ambil waktu saat ini dengan memperhatikan zona waktu

⑤ Konversi waktu UTC ke waktu Jepang (JST)

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

6.6 Atur waktu pembuatan record ke timestamp saat ini secara default

⑥ Secara otomatis atur created_at ke timestamp saat ini

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

6.7 Hapus data setelah jangka waktu tertentu

⑦ Hapus data yang lebih lama dari 30 hari

DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

6.8 Dapatkan waktu saat ini dengan presisi milidetik (mikrodetik)

⑧ Dapatkan timestamp saat ini dengan presisi milidetik

SELECT NOW(3);

Contoh output

2025-02-14 16:30:45.123

6.9 Panduan Pemilihan Kasus Penggunaan

Use caseRecommended functionExample
Record the current time when inserting dataNOW()INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
Record the current time when updating dataNOW()UPDATE users SET last_login = NOW() WHERE id = 1;
Retrieve data from the past N daysNOW() - INTERVAL X DAYSELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
Retrieve data within a specific time rangeCURTIME()SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
Convert UTC time to JSTCONVERT_TZ()SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
Delete old data (older than 30 days)NOW() - INTERVAL X DAYDELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

6.10 Ringkasan

  • NOW() menangani pengambilan timestamp saat ini dasar
  • CURTIME() dan CURRENT_TIME() berguna ketika Anda hanya membutuhkan waktu
  • Anda dapat menggunakan waktu saat ini untuk query jendela waktu, penyaringan berdasarkan waktu dalam hari, dan timestamp dengan presisi milidetik
  • Karena timestamp bergantung pada zona waktu, gunakan CONVERT_TZ() untuk mendapatkan waktu yang tepat
  • Untuk manajemen ukuran basis data, merancang mekanisme yang secara otomatis menghapus data lama juga penting

📌 Kesimpulan: Menggunakan waktu saat ini secara efektif membantu Anda mengelola data lebih efisien di MySQL.

7. FAQ (Pertanyaan yang Sering Diajukan)

Berikut adalah pertanyaan yang sering diajukan (FAQ) tentang cara mendapatkan waktu saat ini di MySQL.
Setiap pertanyaan dijawab dengan jelas dan singkat.

7.1 Apa perbedaan antara NOW() dan SYSDATE()?

Jawaban

Baik NOW() maupun SYSDATE() mengambil tanggal dan waktu saat ini, tetapi keduanya berbeda dalam kapan nilai tersebut dievaluasi.

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeReturns a different timestamp on each evaluation

Contoh uji

SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();

Contoh output

NOW()        | SLEEP(3) | NOW()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:45
SYSDATE()    | SLEEP(3) | SYSDATE()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:48

🚨 Untuk pemrosesan transaksi, NOW() umumnya direkomendasikan.

7.2 Apakah CURRENT_TIMESTAMP() dan NOW() sama?

Jawaban

Mereka berperilaku hampir sama, tetapi CURRENT_TIMESTAMP() dapat digunakan sebagai nilai DEFAULT.

Contoh saat membuat tabel

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

7.3 Bagaimana cara mendapatkan waktu saat ini di zona waktu tertentu?

Jawaban

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

7.4 Bagaimana cara merekam waktu saat ini secara otomatis?

Jawaban

Saat membuat tabel, tentukan DEFAULT CURRENT_TIMESTAMP untuk secara otomatis menyimpan waktu saat ini di created_at.

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

7.5 Bagaimana cara mengambil data dari N hari yang lalu?

Jawaban

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;

7.6 Bagaimana cara mendapatkan waktu saat ini dengan presisi milidetik (mikrodetik)?

Jawaban

SELECT NOW(3);

Contoh output

2025-02-14 16:30:45.123

7.7 Ringkasan

  • NOW() dan SYSDATE() berbeda dalam waktu evaluasi
  • CURRENT_TIMESTAMP() dapat digunakan sebagai nilai DEFAULT
  • Gunakan CONVERT_TZ() untuk mengambil timestamp di zona waktu lain
  • Gunakan DEFAULT CURRENT_TIMESTAMP untuk merekam timestamp pembuatan secara otomatis
  • Gunakan NOW() - INTERVAL X DAY untuk mengambil data dari X hari yang lalu
  • NOW(3) atau NOW(6) mendukung timestamp dengan presisi milidetik/mikrodetik

📌 Kesimpulan: Memilih fungsi waktu MySQL yang tepat sangat penting untuk bekerja dengan timestamp saat ini.

8. Ringkasan

Dalam artikel ini, kami menjelaskan cara mendapatkan waktu saat ini di MySQL.
Berfokus pada fungsi NOW(), kami membahas perbedaan antara fungsi serupa, contoh kueri praktis, dan catatan penting.

8.1 Fungsi MySQL Utama untuk Mendapatkan Waktu Saat Ini

FunctionWhat it returnsFormatNotes
NOW()Current date and timeYYYY-MM-DD HH:MM:SSMost common function
SYSDATE()Date and time at executionYYYY-MM-DD HH:MM:SSCan return different values on each evaluation
CURTIME()Current timeHH:MM:SSTime only (no date)
CURRENT_TIME()Current timeHH:MM:SSSame as CURTIME()
CURRENT_TIMESTAMP()Current date and timeYYYY-MM-DD HH:MM:SSAlmost the same as NOW()
UTC_TIMESTAMP()Current UTC date and timeYYYY-MM-DD HH:MM:SSTime zone fixed to UTC

📌 Kesimpulan:

  • Untuk pengambilan timestamp saat ini secara umum, NOW() biasanya yang terbaik .
  • Jika Anda membutuhkan waktu eksekusi yang tepat, gunakan SYSDATE() .
  • Jika Anda hanya membutuhkan waktu (tanpa tanggal), pilih CURTIME() .

8.2 Kueri Praktis Menggunakan Waktu Saat Ini

Merekam waktu saat ini saat menyisipkan data

INSERT INTO users (name, created_at) VALUES ('Sato', NOW());

Merekam waktu saat ini saat memperbarui data

UPDATE users SET last_login = NOW() WHERE id = 1;

Mengambil data dari 7 hari yang lalu

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;

Mengambil waktu dengan mempertimbangkan zona waktu

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

Menghapus data lama (lebih tua dari 30 hari)

DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

8.3 Catatan Tentang Zona Waktu

  • MySQL NOW() bergantung pada pengaturan zona waktu default, sehingga hasil dapat berbeda di berbagai lingkungan.
  • Gunakan CONVERT_TZ() untuk mengambil timestamp di zona waktu lain.
  • Jika Anda ingin mengubah zona waktu server:
    SET GLOBAL time_zone = 'Asia/Tokyo';
    

8.4 FAQ Tentang Fungsi Waktu Saat Ini MySQL

Q1. Apa perbedaan antara NOW() dan SYSDATE()?

NOW() mengambil waktu pada awal kueri, sedangkan SYSDATE() mengambil waktu pada eksekusi.

Q2. Apakah CURRENT_TIMESTAMP() dan NOW() sama?

➡ Mereka hampir sama, tetapi CURRENT_TIMESTAMP() dapat digunakan sebagai nilai DEFAULT.

Q3. Bagaimana cara mendapatkan waktu saat ini dengan presisi milidetik (mikrodetik)?

➡ Gunakan NOW(3) (milidetik) atau NOW(6) (mikrodetik).

SELECT NOW(3); -- Example: 2025-02-14 16:30:45.123

8.5 Ringkasan

  • Di MySQL, memilih fungsi yang tepat untuk waktu saat ini penting .
  • Gunakan NOW() untuk kasus umum, dan SYSDATE() ketika Anda membutuhkan cap waktu eksekusi yang tepat .
  • Gunakan CURTIME() hanya untuk waktu, dan CONVERT_TZ() untuk konversi zona waktu .
  • Anda dapat menggunakan waktu saat ini pada penyisipan, pembaruan, pencarian, dan penghapusan .

📌 Kesimpulan: Kuasai fungsi waktu MySQL untuk mengelola data lebih efisien.