Problema:
Vorresti ottenere la data e l'ora correnti in T-SQL, ma non desideri l'offset del fuso orario.
Soluzione:
Useremo GETDATE(), CURRENT_TIMESTAMP e SYSDATETIME() per ottenere la data e l'ora correnti senza l'offset del fuso orario. Le prime due funzioni consentono di ottenere l'ora corrente con una precisione inferiore. (GETDATE() è una funzione T-SQL, mentre CURRENT_TIMESTAMP è una funzione SQL Standard; entrambe le funzioni restituiscono lo stesso tipo di dati). La terza funzione, SYSDATETIME(), ottiene un tempo di precisione maggiore.
SELECT CURRENT_TIMESTAMP ;
Ecco il risultato della query:
2019-08-14 10:01:06.983
Discussione:
In un database di SQL Server, il CURRENT_TIMESTAMP
la funzione restituisce la data e l'ora correnti (ovvero l'ora sulla macchina in cui viene eseguita l'istanza di SQL Server) come datetime
tipo di dati. Datetime
è un tempo di precisione inferiore che ha un massimo di tre secondi frazionari. (Nel nostro esempio, questo è 983.)
GETDATE() è simile a CURRENT_TIMESTAMP
e restituisce lo stesso risultato. La differenza è che CURRENT_TIMESTAMP
è lo standard SQL, mentre GETDATE() è specifico di SQL Server.
SELECT GETDATE() ;
Naturalmente, se si desidera ottenere una data e un'ora correnti di maggiore precisione senza un offset di fuso orario, è possibile utilizzare la funzione SYSDATETIME(). Questa funzione restituisce un datetime2
tipo di dati con sette secondi frazionari. Guarda l'esempio qui sotto:
SELECT SYSDATETIME() ;
Ecco il risultato:
2019-08-14 10:01:06.9754163