SQL Server - Comparar fecha

   
Vista:

Comparar fecha

Publicado por Jorgito_p (7 intervenciones) el 22/03/2012 09:35:35
Buenos días:
Tengo un tabla de ventas (TBL_VENTAS) que contiene un campo datetime (FECHA_HORA) y quisiera hacer una vista de esta tabla que incluyera aquellos registros que tuvieran la fecha actual, sin tener en cuenta la hora.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Comparar fecha

Publicado por Isaias (3180 intervenciones) el 22/03/2012 16:24:57
Simple

WHERE tucolumnaFecha >= getdate() and tucolumnaFecha <= getdate()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar fecha

Publicado por leonardo_josue (79 intervenciones) el 26/03/2012 17:57:08
Hola Jorgito_p:

No estoy seguro de si la consulta del compañero Isaias aplica para lo que necesitas, pero podrías hacerlo así:

1
2
WHERE
CONVERT(varchar(10), fecha, 103) = CONVERT(varchar(10), GETDATE(), 103)


Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Comparar fecha

Publicado por Isaias (3180 intervenciones) el 26/03/2012 21:26:34
Jamaz debes hacer CAST/CONVERT sobre tus campos, ¿porque?, sencillo, el motor no hara uso de los indices.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Comparar fecha

Publicado por Pablinx (1 intervención) el 28/03/2012 12:50:50
Hola Isaías,

Tienes razón al decir que haciendo un Cast/Convert sobre un campo que tiene índice, el motor de BBDD no hace uso de dicho índice (problema).

(Esa es una problemática que he descubierto hace poco y que desconocía)

Pero he de decir que el ejemplo que propones “WHERE tucolumnaFecha >= getdate() and tucolumnaFecha <= getdate()”, no es correcto. Porque aquí lo que obligas es que tucolumnaFecha tenga la misma fecha que cuando se hace el getdate, efecto deseado, pero también obligas a que la hora sea la misma, efecto no deseado.

Yo propongo, y funciona, lo siguiente. Aunque si hay alguna alternativa mejor me gustaría que me la comentaseis (no me gusta mucho, es un poco guarreras, pero el SQL server es lo que tiene).

Declare @FechaInicio datetime
Declare @FechaFin datetime

SET @FechaInicio = CAST (CONVERT(varchar(8), GetDate(),112) as datetime)
SET @FechaFIN = CAST (CONVERT(varchar(8), GetDate(),112) + ‘ 23:59:59’ as datetime)

--Y luego…

Select …
From …
WHERE tucolumnaFecha between @FechaInicio and @FechaFIN

Así me funciona, pero como he dicho no me gusta la solución.

Un saludo a todos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Comparar fecha

Publicado por Isaias (3180 intervenciones) el 28/03/2012 18:38:54
Bueno, nunca me ha gustado utilizar BETWEEN para comparar fechas y me funciona perfectamente el >= y <=, con hora o sin ella.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar fecha

Publicado por Pedro (1 intervención) el 27/01/2014 18:42:02
tus argumentos para con Isaías son correctos al igual que tu respuesta pero yo le pongo 10 ( Convert(Char(10),Fecha,112) ) y reitero, tu respuesta es la mas correcta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar fecha

Publicado por rodolopa (1 intervención) el 17/04/2015 07:42:48
Esta respuesta esta muy buena. Es correcta, a mi me sirvio de mucho. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar