PDA

Ver la Versión Completa : Fechas en criterios de consulta


subzero
06-03-2009, 04:34:47
Buenas....

Estoy utilizando SQL SERVER 2005, tengo una consulta en la cual traigo información de una tabla que maneja varios campos dentro de ellos algunos de tipo Datetime, como todos saben este tipo de dato inserta la información de fecha y hora en el formato largo, pues bien, sucede que necesito que esta consulta tome solamente la fecha y no incluya la hora pues deseo evaluar la información en un rango de fechas pero me esta trayendo toda la información que se encuentra en la tabla el script sql que utilizo es el siguiente:

SELECT
TIEMPOS.TIE_FACT_FECHA,
TIEMPOS.TIE_PED_NUMERO,
USUARIOS.USU_LOGIN, COUNT(*) AS NUM
FROM TIEMPOS INNER JOIN USUARIOS ON (TIEMPOS.TIE_USU_ID_SEPARADOR = USUARIOS.USU_ID)
WHERE CONVERT(VARCHAR(10),dbo.TIEMPOS.TIE_PED_FECHA,103) BETWEEN '01/03/2009' AND '05/03/2009'
GROUP BY dbo.USUARIOS.USU_LOGIN ORDER BY NUM DESC


He estado tentado a crear un nuevo campo que almacene solo la fecha, pero creo que debe existir otra forma, agradezco sus colaboraciones.

luisgutierrezb
06-03-2009, 04:55:30
mas bien necesitas cambiar el formato, prueba con esto:



WHERE CONVERT(VARCHAR(10),dbo.TIEMPOS.TIE_PED_FECHA,112) BETWEEN '20090301' AND '20090305'

Es el formato iso de fecha yyyymmdd

subzero
06-03-2009, 05:33:09
Luis, gracias por tu aporte remplaze la linea que sugeriste pero ahora no me muestra ni un solo registro.

lgarcia
06-03-2009, 13:00:21
Hola:

Lo que te podria recomendar es si te interesa mantener completo ese campo fecha, es crear un campo con la fecha truncada para realizar las consultas, esta puedes ser una opcion, usando una funcion como en el siguiente ejemplo:

1ro paso:
crear esta funcion

CREATE FUNCTION FechaConteo
(@id INT)
RETURNS char(10)
AS
BEGIN
DECLARE @fecha char(10)
Select @fecha = CONVERT(Char(10), fecha_conteo, 101)
FROM Bolsos
WHERE id = @id
RETURN @fecha
END

2do paso:
crear en la tabla correspondiente el campo nuevo char(10) y en la formula pasarle: dbo.FechaConteo(id)
y guardar la estructura de la tabla

3er paso:
Volver al diseno de la tabla borrar la formula y cambiar el tipo del campo a datetime


Saludos

Luis Garcia

ContraVeneno
06-03-2009, 16:32:50
¿para que convertir una fecha a cadena (varchar) teníendo tantas funciones en SQL?

where Year(Fecha) = 2009 and Month(Fecha) in (1, 2, 3)


por cierto, esto:
where Convert(char(8),Fecha,112) between '20090301' and '20090303'
Funciona perfectamente

subzero
07-03-2009, 00:41:31
Efectivamente, me funcionó gracias a todos