Qual è la funzionalità di SQL Server che ti consente di ottenere la data corrente come un tipo DATE
come SQL Funzionalità “s CURRENT_DATE
standard. Qual è la <current date value function>
per SQL Server?
Utilizzando PostgreSQL, sto cercando per qualcosa del tipo,
SELECT CURRENT_DATE; current_date -------------- 2018-06-27 (1 row)
Risposta
Puoi utilizzare uno dei due GETDATE
(tipo di ritorno datetime
) o SYSDATETIME
(tipo di ritorno datetime2
), con la differenza che è la precisione fino a nanosecondi per SYSDATETIME()
.
Esempio :
SELECT GETDATE() fn_GetDate, SYSDATETIME() fn_SysDateTime
Risultati:
fn_GetDate fn_SysDateTime 2018-06-27 10:31:18.963 2018-06-27 10:31:18.9659170
Vedi Tipi di dati e funzioni di data e ora (Transact-SQL) nella documentazione del prodotto.
Per completezza, SQL Server riconosce anche CURRENT_DATE
come indicato nella domanda, come funzione scalare ODBC :
SELECT {fn CURRENT_DATE()};
Questo restituisce varchar(10)
, quindi sarebbe necessario un cast esplicito o una conversione in date
tipo di dati:
SELECT CONVERT(date, {fn CURRENT_DATE()});
Il built- nelle funzioni sono consigliate rispetto alle funzioni scalari ODBC.
Rispondi
CAST (... to date)
con GETDATE()
o SYSDATETIME()
Il modo migliore è
SELECT CAST( GETDATE() AS date );
Per estensione in SQL Server, puoi trasmettere SYSDATETIME()
fino ad oggi,
SELECT CAST( SYSDATETIME() AS date );
I documenti su SYSDATETIME
(Transact-SQL) mostra altri esempi,
SELECT CONVERT (date, SYSDATETIME()) ,CONVERT (date, SYSDATETIMEOFFSET()) ,CONVERT (date, SYSUTCDATETIME()) ,CONVERT (date, CURRENT_TIMESTAMP) ,CONVERT (date, GETDATE()) ,CONVERT (date, GETUTCDATE()); /* All returned 2007-04-30 */
Potrebbero esserci vantaggi CAST (GETDATE() AS date)
, poiché restituisce in modo nativo meno precisione.
Commenti
- Questo è il modo in cui lho sempre fatto, anche se se stai trasmettendo a DATE, importa se il tempo di input ha una precisione al nanosecondo?