En SQL Server tengo una columna DATETIME
que incluye un elemento de tiempo.¿Comparar una cadena de fecha a fecha y hora en SQL Server?
Ejemplo:
'14 AUG 2008 14:23:019'
¿Cuál es el método mejor sólo para seleccionar los registros para un día en particular, haciendo caso omiso de la pieza del tiempo?
Ejemplo: (No es seguro, ya que no se corresponde con la parte de hora y vuelve ninguna fila)
DECLARE @p_date DATETIME
SET @p_date = CONVERT(DATETIME, '14 AUG 2008', 106)
SELECT *
FROM table1
WHERE column_datetime = @p_date
Nota: En vista de este sitio también se trata de tomar notas y técnicas de recoger y luego se olvida , Voy a publicar mi propia respuesta a esta pregunta ya que las cosas de DATETIME en MSSQL es probablemente el tema que busco más en SQLBOL.
actualización ejemplo clarificada para ser más específicos.
Editar Lo sentimos, pero he tenido respuestas incorrectas a abajo-mod (respuestas que devuelven resultados erróneos).
@Jorrit: WHERE (date>'20080813' AND date<'20080815')
volverá el 13 y el 14.
@wearejimbo: ¡Cierre, pero no cigarro! insignia otorgada a usted. Se ha perdido a cabo registros escritos en 14/08/2008 23: 59: 001 a 23: 59: (. Es decir, menos de 1 segundo antes de la medianoche) 999
creo que CAST ('14-AGO-2008' como DateTime) es ligeramente mejor. Creo que es un poco más legible y creo que CAST es más portable que CONVERT() porque CAST() es compatible con ANSI SQL-92 y -99 –
Puede usar la palabra clave BETWEEN como una forma abreviada de esta respuesta. –
@BorhanMooz, en realidad, BETWEEN no captura la interrelación> =/
NargothBond