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ă?