Database
 sql >> Database >  >> RDS >> Database

Come ottenere la data e l'ora correnti (senza fuso orario) in T-SQL

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