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