¿Cuál es la función CURRENT_DATE o valor de fecha actual para SQL Server?

¿Cuál es la funcionalidad de SQL Server que le permite obtener la fecha actual como un tipo DATE como SQL Función estándar «s CURRENT_DATE. ¿Qué es la <current date value function> para SQL Server?

Con PostgreSQL, estoy buscando para algo como,

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

Respuesta

Puede usar GETDATE (tipo de retorno datetime ) o SYSDATETIME (tipo de retorno datetime2 ), con la diferencia de que la precisión es de hasta nanosegundos para SYSDATETIME().

Ejemplo :

SELECT GETDATE() fn_GetDate, SYSDATETIME() fn_SysDateTime 

Resultados:

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

Consulte Funciones y tipos de datos de fecha y hora (Transact-SQL) en la documentación del producto.


Para completar, SQL Server también reconoce CURRENT_DATE como se menciona en la pregunta, como una función escalar ODBC :

SELECT {fn CURRENT_DATE()}; 

Esto devuelve varchar(10), por lo que necesitaría una conversión explícita o convertir a la date tipo de datos:

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

El in se recomiendan sobre funciones escalares ODBC.

Responda

CAST (... to date) con GETDATE() o SYSDATETIME()

La mejor manera es

SELECT CAST( GETDATE() AS date ); 

Por extensión en SQL Server, puede transmitir SYSDATETIME() hasta la fecha,

SELECT CAST( SYSDATETIME() AS date ); 

Los documentos en SYSDATETIME (Transact-SQL) muestra algunos ejemplos más,

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

Puede haber ventajas CAST (GETDATE() AS date), ya que devuelve de forma nativa menos precisión.

Comentarios

  • Esta es la forma en que siempre lo he hecho, aunque si estás transmitiendo hasta la FECHA, ¿importa si el tiempo de entrada tiene una precisión de nanosegundos?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *