En SQL Server 2005, ¿cómo obtengo la fecha actual sin la parte de tiempo? He estado usando GETDATE()
pero me gustaría tener un tiempo de 00: 00: 00.0
En SQL Server 2005, ¿cómo obtengo la fecha actual sin la parte de tiempo? He estado usando GETDATE()
pero me gustaría tener un tiempo de 00: 00: 00.0
Respuestas:
El más rápido si tiene que iterar sobre un conjunto de registros y no tiene fecha en SQL Server 2008
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
Dos respuestas diferentes y excelentes en StackOverflow lo confirman: uno , dos
Las conversiones de Varchar son una de las peores formas de hacerlo. Por supuesto, por un valor puede que no importe, pero es un buen hábito.
De esta manera también es determinista, por ejemplo, si desea indexar una columna calculada. Incluso las personas que escriben libros sobre SQL Server quedan atrapadas con las conversiones de fecha y hora
Esta técnica también es extensible.
DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 31)
Editar:
Como mencioné sobre el determinismo, los métodos varchar no son seguros a menos que use el estilo 112.
Otras respuestas aquí señalan que nunca aplicarías esto a una columna. Esto es correcto, pero es posible que desee seleccionar 100k filas o agregar una columna calculada o GROUP BY solo. Entonces tienes que usar este método.
La otra respuesta también menciona el estilo 110. Este no es el idioma o SET DATEFORMAT seguro y falla con la configuración de idioma "británico". Consulte la guía definitiva sobre los tipos de datos de fecha y hora de Tibor Karaszi.