- 1 1. Introduction
- 2 2. MySQL Functions to Get the Current Date/Time (Comparison Table)
- 3 3. NOW() Function Details
- 4 4. Karakteristik Fungsi SYSDATE()
- 5 5. CURTIME() dan CURRENT_TIME()
- 5.1 5.1 Apa Itu CURTIME()?
- 5.2 5.2 Apa Itu CURRENT_TIME()?
- 5.3 5.3 CURTIME() vs CURRENT_TIME() (Perbandingan)
- 5.4 5.4 Contoh Praktis CURTIME() / CURRENT_TIME()
- 5.5 5.5 Batasan dan Catatan untuk CURTIME() / CURRENT_TIME()
- 5.6 5.6 Kapan Harus Menggunakan CURTIME() / CURRENT_TIME()?
- 5.7 5.7 Ringkasan CURTIME() / CURRENT_TIME()
- 6 6. Contoh Query Praktis Menggunakan Waktu Saat Ini
- 6.1 6.1 Catat waktu saat ini saat memasukkan data
- 6.2 6.2 Catat waktu saat ini saat memperbarui data
- 6.3 6.3 Ambil data dari N hari terakhir
- 6.4 6.4 Ambil data yang dibuat dalam rentang waktu tertentu
- 6.5 6.5 Ambil waktu saat ini dengan memperhatikan zona waktu
- 6.6 6.6 Atur waktu pembuatan record ke timestamp saat ini secara default
- 6.7 6.7 Hapus data setelah jangka waktu tertentu
- 6.8 6.8 Dapatkan waktu saat ini dengan presisi milidetik (mikrodetik)
- 6.9 6.9 Panduan Pemilihan Kasus Penggunaan
- 6.10 6.10 Ringkasan
- 7 7. FAQ (Pertanyaan yang Sering Diajukan)
- 7.1 7.1 Apa perbedaan antara NOW() dan SYSDATE()?
- 7.2 7.2 Apakah CURRENT_TIMESTAMP() dan NOW() sama?
- 7.3 7.3 Bagaimana cara mendapatkan waktu saat ini di zona waktu tertentu?
- 7.4 7.4 Bagaimana cara merekam waktu saat ini secara otomatis?
- 7.5 7.5 Bagaimana cara mengambil data dari N hari yang lalu?
- 7.6 7.6 Bagaimana cara mendapatkan waktu saat ini dengan presisi milidetik (mikrodetik)?
- 7.7 7.7 Ringkasan
- 8 8. Ringkasan
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
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most commonly used |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Unlike NOW(), it can change on each execution |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time 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
DEFAULTkolom (sering lebih tepat daripadaNOW()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 case | Recommended function |
|---|---|
| Get the current date and time | NOW() |
| Get a different timestamp each time within a transaction | SYSDATE() |
| Need only the current time (HH:MM:SS) | CURTIME() or CURRENT_TIME() |
| Set as a table default value | CURRENT_TIMESTAMP() |
| Get UTC time | UTC_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()
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Can 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()
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns 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 dariNOW()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 nilaiDEFAULTkolom 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 case | Recommended function |
|---|---|
| Typical current timestamp retrieval | NOW() |
| Use a consistent timestamp within a transaction | NOW() |
| Need the exact execution time | SYSDATE() |
🚀 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 MySQLCURRENT_TIME()mengikuti standar SQL- Keduanya berperilaku sama
- Pilih berdasarkan preferensi keterbacaan (tidak ada perbedaan kinerja)
5.3 CURTIME() vs CURRENT_TIME() (Perbandingan)
| Function | What it returns | Format | Notes |
|---|---|---|---|
| CURTIME() | Current time (hour/minute/second) | HH:MM:SS | MySQL-specific function |
| CURRENT_TIME() | Current time (hour/minute/second) | HH:MM:SS | SQL-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 case | Recommended function |
|---|---|
| Need only the current time (hour/minute/second) | CURTIME() or CURRENT_TIME() |
| Need current date and time | NOW() |
| Need millisecond precision | CURTIME(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)atauDATE_FORMAT()untuk menyesuaikan format/ketelitian - Jika Anda membutuhkan tanggal, gabungkan dengan
CURDATE()atau gunakanNOW() - Untuk nilai default,
CURRENT_TIMESTAMPbiasanya 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 case | Recommended function | Example |
|---|---|---|
| Record the current time when inserting data | NOW() | INSERT INTO users (name, created_at) VALUES ('Sato', NOW()); |
| Record the current time when updating data | NOW() | UPDATE users SET last_login = NOW() WHERE id = 1; |
| Retrieve data from the past N days | NOW() - INTERVAL X DAY | SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY; |
| Retrieve data within a specific time range | CURTIME() | SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00'; |
| Convert UTC time to JST | CONVERT_TZ() | SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo'); |
| Delete old data (older than 30 days) | NOW() - INTERVAL X DAY | DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY; |
6.10 Ringkasan
NOW()menangani pengambilan timestamp saat ini dasarCURTIME()danCURRENT_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.
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns 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()danSYSDATE()berbeda dalam waktu evaluasiCURRENT_TIMESTAMP()dapat digunakan sebagai nilaiDEFAULT- Gunakan
CONVERT_TZ()untuk mengambil timestamp di zona waktu lain - Gunakan
DEFAULT CURRENT_TIMESTAMPuntuk merekam timestamp pembuatan secara otomatis - Gunakan
NOW() - INTERVAL X DAYuntuk mengambil data dari X hari yang lalu NOW(3)atauNOW(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
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most common function |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Can return different values on each evaluation |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time 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, danSYSDATE()ketika Anda membutuhkan cap waktu eksekusi yang tepat . - Gunakan
CURTIME()hanya untuk waktu, danCONVERT_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.


