- 1 1. Introduzione
- 2 2. Funzioni MySQL per Ottenere la Data/Ora Corrente (Tabella Comparativa)
- 3 3. Dettagli della Funzione NOW()
- 4 4. Caratteristiche della funzione SYSDATE()
- 5 5. CURTIME() e CURRENT_TIME()
- 5.1 5.1 Che cos’è CURTIME()?
- 5.2 5.2 Che cos’è CURRENT_TIME()?
- 5.3 5.3 CURTIME() vs CURRENT_TIME() (Confronto)
- 5.4 5.4 Esempi pratici di CURTIME() / CURRENT_TIME()
- 5.5 5.5 Limitazioni e note per CURTIME() / CURRENT_TIME()
- 5.6 5.6 Quando dovresti usare CURTIME() / CURRENT_TIME()?
- 5.7 5.7 Riepilogo di CURTIME() / CURRENT_TIME()
- 6 6. Esempi pratici di query usando l’ora corrente
- 6.1 6.1 Registra l’ora corrente durante l’inserimento dei dati
- 6.2 6.2 Registra l’ora corrente durante l’aggiornamento dei dati
- 6.3 6.3 Recupera i dati degli ultimi N giorni
- 6.4 6.4 Recupera i dati creati entro un intervallo di tempo specifico
- 6.5 6.5 Recupera l’ora corrente tenendo conto dei fusi orari
- 6.6 6.6 Imposta l’ora di creazione di un record al timestamp corrente per impostazione predefinita
- 6.7 6.7 Elimina i dati dopo un certo periodo di tempo
- 6.8 6.8 Ottieni l’ora corrente con precisione al millisecondo (microsecondo)
- 6.9 6.9 Guida alla selezione dei casi d’uso
- 6.10 6.10 Riepilogo
- 7 7. FAQ (Domande Frequenti)
- 7.1 7.1 Qual è la differenza tra NOW() e SYSDATE()?
- 7.2 7.2 Are CURRENT_TIMESTAMP() and NOW() the same?
- 7.3 7.3 How do I get the current time in a specific time zone?
- 7.4 7.4 How can I automatically record the current time?
- 7.5 7.5 How do I retrieve data from the past N days?
- 7.6 7.6 How do I get the current time with millisecond (microsecond) precision?
- 7.7 7.7 Summary
- 8 8. Summary
1. Introduzione
Ottenere l’ora corrente in MySQL è una parte fondamentale della gestione del database.
Ad esempio, potresti aver bisogno di recuperare l’ora corrente in situazioni come le seguenti:
- Registrare automaticamente un timestamp di creazione durante l’inserimento dei dati (ad es., un timestamp quando un nuovo utente si registra)
- Registrare gli orari di accesso degli utenti (ad es., gestire la cronologia dei login)
- Recuperare dati entro un determinato intervallo di tempo (ad es., ottenere la cronologia degli ordini delle ultime 24 ore)
- Registrare i log di esecuzione del sistema (ad es., gestire i log di errori e di eventi)
Come puoi vedere, recuperare correttamente l’“ora corrente” per la gestione dei dati e dei log è essenziale per gestire un database.
In questo articolo, spiegheremo come ottenere l’ora corrente in MySQL in dettaglio usando query SQL reali.
Tratteremo anche le differenze tra le funzioni più comunemente usate, come scegliere quella giusta e forniremo esempi pratici di query—utili sia per principianti che per utenti di livello intermedio.
2. Funzioni MySQL per Ottenere la Data/Ora Corrente (Tabella Comparativa)
MySQL fornisce diverse funzioni per recuperare l’ora corrente.
Scegliere la funzione giusta per il tuo caso d’uso è importante, ma molte persone trovano le differenze confuse.
In questa sezione, confrontiamo le funzioni principali usate per ottenere la data/ora corrente in MySQL e ne spieghiamo le caratteristiche in dettaglio.
2.1 Tabella Comparativa delle Funzioni Temporali MySQL
| 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 |
Dalla tabella sopra, la maggior parte delle funzioni restituisce sia la “data e ora corrente” sia l “ora corrente”, ma la funzione migliore dipende dal tuo scopo.
2.2 Panoramica e Caratteristiche di Ogni Funzione
Funzione NOW()
- La funzione più comune per ottenere la data e l’ora corrente
- Restituisce l’ora al momento in cui inizia l’istruzione SQL
- Spesso usata per i timestamp durante l’inserimento o l’aggiornamento dei dati
SELECT NOW();
Esempio di output
2025-02-14 15:30:45
Funzione SYSDATE()
- Ottiene l’ora corrente al momento dell’esecuzione
- A differenza di NOW(), SYSDATE() può restituire un valore diverso ogni volta che viene valutata (può cambiare anche all’interno di una transazione)
SELECT SYSDATE();
Esempio di output
2025-02-14 15:30:47
Funzione CURTIME()
- Restituisce solo l’ora (HH:MM:SS)
- Utile quando la data non è necessaria
SELECT CURTIME();
Esempio di output
15:30:45
Funzione CURRENT_TIME()
- Funziona come CURTIME()
- Nome della funzione conforme allo standard SQL
SELECT CURRENT_TIME();
Esempio di output
15:30:45
Funzione CURRENT_TIMESTAMP()
- Si comporta come NOW()
- Può essere specificata come valore di colonna
DEFAULT(spesso più appropriato diNOW()per i valori predefiniti)SELECT CURRENT_TIMESTAMP();
Esempio di output
2025-02-14 15:30:45
Impostata come valore predefinito durante la creazione di una tabella:
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Funzione UTC_TIMESTAMP()
- Ottiene l’UTC corrente (Coordinated Universal Time)
- Non dipende dal fuso orario del server, consentendo timestamp coerenti
SELECT UTC_TIMESTAMP();
Esempio di output
2025-02-14 06:30:45
2.3 Quale Funzione Dovresti Usare?
| 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() |
In generale, per il recupero tipico di data/ora, NOW() è solitamente la scelta giusta.
Tuttavia, scegliere la funzione più adatta al tuo caso d’uso consente operazioni sui dati più flessibili e affidabili.
3. Dettagli della Funzione NOW()
La funzione MySQL NOW() è la più comunemente usata per ottenere la data e l’ora corrente (data + ora).
È ampiamente usata per memorizzare i timestamp nel database e per recuperare dati entro intervalli di tempo specifici.
3.1 Uso Base di NOW()
Sintassi di NOW()
SELECT NOW();
Esempio di output
2025-02-14 15:30:45
- Il formato di output è
YYYY-MM-DD HH:MM:SS(anno-mese-giorno ora:minuto:secondo). - L’ora viene recuperata in base alle impostazioni del fuso orario predefinito di MySQL.
3.2 Casi d’uso comuni per NOW()
① Registra l’ora corrente durante l’inserimento dei dati
Quando si inseriscono dati in un database, è possibile utilizzare NOW() per registrare un timestamp di creazione.
INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
② Registra l’ora corrente durante l’aggiornamento dei dati
UPDATE users SET last_login = NOW() WHERE id = 1;
③ Recupera dati da un determinato intervallo di tempo
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
- Specificando
INTERVAL 1 DAY, è possibile recuperare “dati dell’ultimo giorno”.
3.3 Tipo di ritorno e come modificare il formato di output
Tipo di ritorno di NOW()
- Tipo
DATETIME(YYYY-MM-DD HH:MM:SS) - Può anche essere trattato come una stringa
SELECT NOW(), typeof(NOW());
Come cambiare il formato
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_time;
Esempio di output
2025-02-14 15:30:45
3.4 Differenze tra NOW() e 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();
Esempio di 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
🚨 Se lavori con le transazioni, NOW() è consigliato per la coerenza.
3.5 Limitazioni e note per NOW()
① Dipende dal fuso orario
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
② Per i valori predefiniti delle tabelle, usa CURRENT_TIMESTAMP
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3.6 Riepilogo di NOW()
NOW()è la funzione più comune per ottenere la data e l’ora correnti in MySQL.- Può essere usata per inserimenti, aggiornamenti e per recuperare dati basati sul tempo.
- Usa
NOW()quando ti serve un timestamp coerente all’interno di una transazione. SYSDATE()restituisce un’ora diversa a ogni valutazione, quindi usala quando hai bisogno dell’ora esatta di esecuzione.- Usa
CONVERT_TZ()per ottenere l’ora in un fuso orario diverso.
📌 Conclusione: nella maggior parte dei casi, NOW() è la scelta migliore per ottenere la data e l’ora correnti in MySQL.

4. Caratteristiche della funzione SYSDATE()
La funzione SYSDATE() è un altro modo per ottenere la data e l’ora correnti in MySQL, ma si comporta in modo diverso da NOW().
In questa sezione spiegheremo l’uso base di SYSDATE(), come differisce da NOW() e le note importanti.
4.1 Cos’è SYSDATE()?
SYSDATE() è una funzione che restituisce l’ora al momento dell’esecuzione dell’istruzione.
A differenza di NOW(), restituisce un timestamp diverso ogni volta che viene valutata.
Sintassi di SYSDATE()
SELECT SYSDATE();
Esempio di output
2025-02-14 16:00:45
- Restituito nel formato
YYYY-MM-DD HH:MM:SS - Rappresenta il momento in cui la query viene eseguita
4.2 Differenze tra SYSDATE() e 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 |
Confronto di comportamento: NOW() vs SYSDATE()
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Esempio di 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
📌 Punti chiave
NOW()mantiene il timestamp dall’inizio dell’istruzione, quindi non cambia.SYSDATE()restituisce un timestamp diverso ogni volta che viene valutata, quindi cambia dopo 3 secondi.
🚨 Usa NOW() per l’elaborazione delle transazioni
- Poiché
SYSDATE()può comportarsi diversamente daNOW()in ambienti multithread,NOW()è generalmente consigliato per la coerenza transazionale.
4.3 Esempi di utilizzo di SYSDATE()
① Registra l’ora corrente durante l’inserimento dei dati
INSERT INTO logs (event, created_at) VALUES ('User login', SYSDATE());
② Registra l’ora corrente durante l’aggiornamento dei dati
UPDATE users SET last_login = SYSDATE() WHERE id = 1;
③ Ottieni l’ora corrente in un formato specifico
SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s') AS formatted_time;
Esempio di output
2025-02-14 16:05:30
4.4 Limitazioni e note per SYSDATE()
① Comportamento della transazione
NOW()mantiene il timestamp dall’inizio dell’istruzione , quindi può essere usato in modo coerente all’interno di una transazione.SYSDATE()restituisce un timestamp diverso ogni volta , quindi può verificarsi un drift temporale all’interno di una transazione.
② Non può essere usato come valore DEFAULT
SYSDATE()non può essere impostato come valoreDEFAULTdi una colonna della tabella .
✅ Soluzione: Usa DEFAULT CURRENT_TIMESTAMP.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4.5 Quando dovresti usare 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() è adatto per la registrazione in tempo reale, ma non è ideale per l’elaborazione di transazioni.
4.6 Riepilogo di SYSDATE()
- SYSDATE() recupera il timestamp al momento dell’esecuzione, a differenza di
NOW(). - Poiché può restituire valori diversi ogni volta, è utile per la registrazione in tempo reale.
- Per la coerenza transazionale, si consiglia
NOW(). - Per i valori predefiniti, usa
CURRENT_TIMESTAMP.
📌 Conclusione: per il recupero generale di timestamp, NOW() è il migliore; per tempi di esecuzione precisi, scegli SYSDATE().
5. CURTIME() e CURRENT_TIME()
Quando vuoi ottenere l’ora corrente in MySQL, CURTIME() e CURRENT_TIME() vengono usati quando ti serve solo l’ora (HH:MM:SS).
In questa sezione spiegheremo l’uso base, le differenze e esempi pratici per ciascuno.
5.1 Che cos’è CURTIME()?
CURTIME() è una funzione che ottiene l’ora corrente (ora, minuto, secondo) in MySQL.
La sua caratteristica principale è che non include la data—viene restituita solo la parte dell’ora.
Sintassi di CURTIME()
SELECT CURTIME();
Esempio di output
16:30:45
- Formato:
HH:MM:SS - Dipende dall’impostazione del fuso orario del server
- A differenza di
NOW(), è adatto quando non hai bisogno di informazioni sulla data
5.2 Che cos’è CURRENT_TIME()?
CURRENT_TIME(), come CURTIME(), è una funzione che ottiene l’ora corrente (HH:MM:SS).
In pratica, si comporta esattamente come CURTIME().
Sintassi di CURRENT_TIME()
SELECT CURRENT_TIME();
Esempio di output
16:30:45
📌 Qual è la differenza?
CURTIME()è specifico di MySQLCURRENT_TIME()è standard SQL- Si comportano allo stesso modo
- Scegli in base alla preferenza di leggibilità (nessuna differenza di prestazioni)
5.3 CURTIME() vs CURRENT_TIME() (Confronto)
| 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 Esempi pratici di CURTIME() / CURRENT_TIME()
① Registra l’ora corrente durante l’inserimento dei dati
INSERT INTO user_logs (event, event_time) VALUES ('Login', CURTIME());
② Filtraggio (recupera dati entro un intervallo di tempo specifico)
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
③ Modifica la precisione (includi millisecondi)
SELECT CURTIME(3); -- Display up to 3 fractional digits
Esempio di output
16:30:45.123
5.5 Limitazioni e note per CURTIME() / CURRENT_TIME()
① Nessuna informazione sulla data, quindi combina con una data quando necessario
SELECT CONCAT(CURDATE(), ' ', CURTIME()) AS full_datetime;
② Quando usato come valore DEFAULT
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event_time TIME DEFAULT CURTIME()
);
5.6 Quando dovresti usare 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) |
📌 Nella maggior parte dei casi, sia CURTIME() che CURRENT_TIME() funzionano bene.
Scegli quella che trovi più leggibile.
5.7 Riepilogo di CURTIME() / CURRENT_TIME()
CURTIME()è specifico di MySQL;CURRENT_TIME()è standard SQL- Entrambi recuperano l’ora corrente (HH:MM:SS)
- Usa
CURTIME(3)oDATE_FORMAT()per regolare formattazione/precisione - Se ti serve una data, combina con
CURDATE()o usaNOW() - Per i valori predefiniti,
CURRENT_TIMESTAMPè comunemente usato
📌 Conclusione: Se ti serve solo l’ora corrente, CURTIME() è una scelta solida.
6. Esempi pratici di query usando l’ora corrente
Adesso che hai capito come recuperare l’ora corrente in MySQL, diamo un’occhiata a modi pratici per usarla.
In questa sezione, introdurremo esempi di query reali che utilizzano l’ora corrente.
Imparerai tecniche utili per le attività quotidiane del database, come inserimenti, aggiornamenti e ricerche.
6.1 Registra l’ora corrente durante l’inserimento dei dati
① Registra l’ora corrente quando un utente si registra
INSERT INTO users (name, email, created_at)
VALUES ('Sato', 'sato@example.com', NOW());
6.2 Registra l’ora corrente durante l’aggiornamento dei dati
② Registra il timestamp dell’ultimo accesso dell’utente
UPDATE users SET last_login = NOW() WHERE id = 1;
6.3 Recupera i dati degli ultimi N giorni
③ Recupera i dati degli ordini degli ultimi 7 giorni
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
6.4 Recupera i dati creati entro un intervallo di tempo specifico
④ Recupera i dati creati oggi tra le 9:00 e le 18:00
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
6.5 Recupera l’ora corrente tenendo conto dei fusi orari
⑤ Converti l’ora UTC in ora Giappone (JST)
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
6.6 Imposta l’ora di creazione di un record al timestamp corrente per impostazione predefinita
⑥ Imposta automaticamente created_at al timestamp corrente
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
6.7 Elimina i dati dopo un certo periodo di tempo
⑦ Elimina i dati più vecchi di 30 giorni
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
6.8 Ottieni l’ora corrente con precisione al millisecondo (microsecondo)
⑧ Ottieni il timestamp corrente con precisione al millisecondo
SELECT NOW(3);
Esempio di output
2025-02-14 16:30:45.123
6.9 Guida alla selezione dei casi d’uso
| 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 Riepilogo
NOW()gestisce il recupero di base del timestamp correnteCURTIME()eCURRENT_TIME()sono utili quando ti serve solo l’ora- Puoi usare l’ora corrente per query a finestra temporale, filtraggio per ora del giorno e timestamp con precisione al millisecondo
- Poiché i timestamp dipendono dai fusi orari, usa
CONVERT_TZ()per ottenere l’ora corretta - Per la gestione delle dimensioni del database, è importante progettare un meccanismo per eliminare automaticamente i dati vecchi
📌 Conclusione: Usare efficacemente l’ora corrente ti aiuta a gestire i dati in modo più efficiente in MySQL.
7. FAQ (Domande Frequenti)
Ecco domande frequenti (FAQ) su come ottenere l’ora corrente in MySQL.
Ogni domanda è risposta in modo chiaro e conciso.
7.1 Qual è la differenza tra NOW() e SYSDATE()?
Risposta
Sia NOW() che SYSDATE() recuperano la data e l’ora correnti, ma differiscono per quando il valore viene valutato.
| 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 |
Esempio di test
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
Esempio di 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
🚨 Per l’elaborazione delle transazioni, NOW() è generalmente consigliato.
7.2 Are CURRENT_TIMESTAMP() and NOW() the same?
Answer
They behave almost the same, but CURRENT_TIMESTAMP() can be used as a DEFAULT value.
Example when creating a table
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.3 How do I get the current time in a specific time zone?
Answer
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
7.4 How can I automatically record the current time?
Answer
When creating a table, specify DEFAULT CURRENT_TIMESTAMP to automatically store the current time in created_at.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.5 How do I retrieve data from the past N days?
Answer
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
7.6 How do I get the current time with millisecond (microsecond) precision?
Answer
SELECT NOW(3);
Example output
2025-02-14 16:30:45.123
7.7 Summary
NOW()andSYSDATE()differ in evaluation timingCURRENT_TIMESTAMP()can be used as aDEFAULTvalue- Use
CONVERT_TZ()to retrieve timestamps in other time zones - Use
DEFAULT CURRENT_TIMESTAMPto auto-record creation timestamps - Use
NOW() - INTERVAL X DAYto retrieve data from the past X days NOW(3)orNOW(6)supports millisecond/microsecond precision timestamps
📌 Conclusion: Choosing the right MySQL time function is essential for working with current timestamps.
8. Summary
In this article, we explained how to get the current time in MySQL.
Focusing on the NOW() function, we covered differences between similar functions, practical query examples, and important notes.
8.1 Main MySQL Functions to Get the Current Time
| 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 |
📌 Conclusion:
- For general current timestamp retrieval,
NOW()is usually best . - If you need the exact execution time, use
SYSDATE(). - If you only need the time (no date), choose
CURTIME().
8.2 Practical Queries Using the Current Time
Record the current time when inserting data
INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
Record the current time when updating data
UPDATE users SET last_login = NOW() WHERE id = 1;
Retrieve data from the past 7 days
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
Retrieve time with time zones in mind
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
Delete old data (older than 30 days)
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
8.3 Notes About Time Zones
- MySQL
NOW()depends on the default time zone setting , so results can differ across environments. - Use
CONVERT_TZ()to retrieve timestamps in another time zone. - If you want to change the server time zone:
SET GLOBAL time_zone = 'Asia/Tokyo';
8.4 FAQ About MySQL Current Time Functions
Q1. What’s the difference between NOW() and SYSDATE()?
➡ NOW() retrieves the time at query start, while SYSDATE() retrieves the time at execution.
Q2. Are CURRENT_TIMESTAMP() and NOW() the same?
➡ They are almost the same, but CURRENT_TIMESTAMP() can be used as a DEFAULT value.
Q3. How do I get the current time with millisecond (microsecond) precision?
➡ Use NOW(3) (milliseconds) or NOW(6) (microseconds).
SELECT NOW(3); -- Example: 2025-02-14 16:30:45.123
8.5 Summary
- In MySQL, scegliere la funzione giusta per l’ora corrente è importante .
- Usa
NOW()per i casi tipici, eSYSDATE()quando ti servono timestamp di esecuzione esatti . - Usa
CURTIME()solo per l’ora, eCONVERT_TZ()per la conversione del fuso orario . - Puoi usare l’ora corrente in inserimenti, aggiornamenti, ricerche e cancellazioni .
📌 Conclusione: Padroneggia le funzioni temporali di MySQL per gestire i dati in modo più efficiente.


