Care este funcția CURRENT_DATE sau valoarea curentă a datei pentru SQL Server?

Care este funcționalitatea SQL Server care vă permite să obțineți data curentă ca tip DATE precum SQL Caracteristica standard „s CURRENT_DATE. Care este <current date value function> pentru SQL Server?

Folosind PostgreSQL, mă uit pentru ceva de genul,

SELECT CURRENT_DATE; current_date -------------- 2018-06-27 (1 row) 

Răspuns

Puteți utiliza fie GETDATE (tip return datetime ) sau SYSDATETIME (tip de returnare datetime2 ), diferența fiind precizia de până la nanosecunde pentru SYSDATETIME().

Exemplu :

SELECT GETDATE() fn_GetDate, SYSDATETIME() fn_SysDateTime 

Rezultate:

 fn_GetDate fn_SysDateTime 2018-06-27 10:31:18.963 2018-06-27 10:31:18.9659170

Consultați Tipuri și funcții de date și date (Transact-SQL) în documentația produsului.


Pentru completitudine, SQL Server recunoaște și CURRENT_DATE așa cum se menționează în întrebare, ca o funcție scalară ODBC :

SELECT {fn CURRENT_DATE()}; 

Aceasta returnează varchar(10), deci ar avea nevoie de o distribuție explicită sau o conversie la date tip de date:

SELECT CONVERT(date, {fn CURRENT_DATE()}); 

The built- în funcții sunt recomandate peste funcțiile scalare ODBC.

Răspuns

CAST (... to date) cu GETDATE() sau SYSDATETIME()

Cel mai bun mod este

SELECT CAST( GETDATE() AS date ); 

Prin extensie în SQL Server, puteți transmite SYSDATETIME() până în prezent,

SELECT CAST( SYSDATETIME() AS date ); 

Documentele de pe SYSDATETIME (Transact-SQL) arată mai multe exemple,

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 */ 

Pot exista avantaje CAST (GETDATE() AS date), ca în mod nativ returnează mai puțină precizie.

Comentarii

  • Acesta este modul în care l-am făcut întotdeauna, deși dacă distribui până la DATE, contează dacă timpul de intrare are precizie la nanosecundă?

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *