none
Filtro por Fecha y Por Hora RRS feed

  • Pregunta

  • Hola Amigos, Saludos a la Comunidad, mi pregunta es la siguiente:

    Tengo una tabla en la base de datos, que contiene varios campos entre ellos, Fecha y Hora, ambos campos están separados es decir mi campo (Fecha) y mi campo (Hora), quiero hacer una consulta donde pueda obtener los datos de la tabla pasando como filtro una fecha y hora especifica.

    P /Ejem :

    Select NumeroDoc, Transacción, TipoDocumento from tbl_Maestros where ----> aquí es donde deseo poner el filtro de la fecha y hora, se hacerlo con la fecha pero como podria acompañar a este filtro de fecha con el filtro de hora   <------

    Muchas Gracias por su Atención

    Saludos y Éxitos....

    martes, 11 de septiembre de 2012 15:31

Todas las respuestas

  • De que tipo de dato son las columnas fecha y hora ?

    Un saludo, Cristian Pérez

    martes, 11 de septiembre de 2012 15:52
  • Ambos son DateTime
    martes, 11 de septiembre de 2012 16:08
  • SELECT		*
    FROM        Tabla
    WHERE		(CONVERT(VARCHAR,Fecha,103) +  CONVERT(VARCHAR,Hora,108))
    			CONDICION --> PARAMETRO
    Lo que hacen los dos convert es concatenar la fecha y la hora en un solo dato, ya tienes que definir la condicion del filtro, es decir, si vas a retornar todos los registros menores, mayores, iguales a la fecha que se envio como parámetro.

    Un saludo, Cristian Pérez

    martes, 11 de septiembre de 2012 16:15
  • Hola Cristian, Gracias por responder, aun no estoy muy claro, quiero explicarte un poco mejor el proceso para que así me puedas ayudar mejor, espero no abusar :), 

    Lo que quiero hacer es lo siguiente:

    En esta tabla("tbl_Maestros") almaceno el encabezado de las transacciones que realiza un modulo de facturación, estos son los maestros de estos movimientos y se guardan aquí, pero guardo por separado la fecha y la hora, estos datos estan amarrados a otra tabla donde se encuentra el movimiento de la venta de los productos, ambas tablas las uno por medio de una llave principal que es generada en el modulo de facturacion y se guarda en ambas tablas al mismo tiempo para poder identificar y unir los registros del El Encabezado con su Detalle de la tabla (1) a la tabla (2), el modulo de facturación realiza transacciones en un periodo de tiempo como el siguiente ejemplo:

     FechaInicial ="11/09/2012"  TiempoInicial = 9:00 a.m hasta el día siguiente

     FechaFin = "12/09/2012"     TiempoFin = 2:00 a.m,

    entonces necesito sacar el total de inventario sumando la cantidad del producto vendido entre este rango de fecha y hora, la consulta que utilizo es la siguiente:

        SELECT Sum(t1.CANTIDAD) AS EXISTENCIA FROM [tbl_kardex] AS t1, [tbl_Maestros] AS t2 

        WHERE t1.NUM_REG= t2.NUM_REG  AND (t2.FECHA >= CONVERT(DATETIME, '" & Format(FechaInicial , "yyyy-MM-dd") & "', 102)) AND (t2.FECHA <=      CONVERT(DATETIME, '" & Format(FechaFin, "yyyy-MM-dd") & "', 102)) AND t1.COD_PROD='001-001'

    como puedes observar no tengo problemas con las fechas pero no se como agregar a esta consulta la hora, espero no haber sido muy extenso y explicativo, talvez es algo sencillo, pero ahorita siento que estoy bloqueado, 

        Muchas Gracias por tu Atención y Respuesta

    martes, 11 de septiembre de 2012 16:54
  • Entiendo, esta bien la explicación, no esta de mas que nos ayudes a entender tu problema !

    Asumiento que tu consulta esta casi buena; es decir, que solo falta agregar la comparación por horas y que lo que pones en el Script como FechaInicial FechaFin son los parámetros (por que no se que mas pueden ser ...), sería algo como:

        SELECT Sum(t1.CANTIDAD) AS EXISTENCIA FROM [tbl_kardex] AS t1, [tbl_Maestros] AS t2 
    
        WHERE
        (
    		(t1.NUM_REG= t2.NUM_REG)  AND 
    		(CONVERT(VARCHAR, t2.FECHA ,103) >= CONVERT(VARCHAR, @FechaInicial ,103) AND CONVERT(VARCHAR, t2.FECHA ,108) >= CONVERT(VARCHAR, @FechaInicial ,108) ) AND
    		(CONVERT(VARCHAR, t2.FECHA ,103) <= CONVERT(VARCHAR, @FechaFin ,103) AND CONVERT(VARCHAR, t2.FECHA ,108) <= CONVERT(VARCHAR, @FechaFin ,108) ) AND
    		 t1.COD_PROD='001-001'
        )

    Revisa bien cuando hago los convert y las condiciones, no pude probar sintaxis por que no me facilitaste los script para la creación de tablas, unos insert de ejemplo y unos resultados esperados; sin embargo, creo que esa es como la idea.


    Un saludo, Cristian Pérez

    martes, 11 de septiembre de 2012 18:27
  • Hola Cristian,  son 4 parámetros los que les paso a la consulta

       FechaInicial es mi primer parámetro de Fecha es decir FechaInicial >="11/09/2012" , y FechaFin es mi segundo parametro de Fecha es decir 

       FechaFin >="12/09/2012"  estos parámetros vienen del formulario, como los quiero en un rango de fecha y hora hago eso que seria como  un       between esta comparacion es dentro del mismo campo como puse arriba t2.Fecha

      Ahora tambien necesito filtrar entre las horas que para eso tengo un campo t2.Hora, y  tambien seria mas o menos lo mismo

       TiempoInicial = 9:00 a.m   3 parametro y  TiempoFin = 2:00 a.m, cuarto parametro todos estos provenientes del formulario donde estos realizando la consulta

    ahora usando tu ejemplo seria algo asi, no se si seria la manera correcta

        SELECT Sum(t1.CANTIDAD) AS EXISTENCIA FROM [tbl_kardex] AS t1, [tbl_Maestros] AS t2 
    
        WHERE
        (
    		(t1.NUM_REG= t2.NUM_REG)  AND 
    		(CONVERT(VARCHAR, t2.FECHA ,103) >= CONVERT(VARCHAR, @FechaInicial ,103) AND CONVERT(VARCHAR, t2.HORA ,108) >= CONVERT(VARCHAR, @TiempoInicial ,108) ) AND
    		(CONVERT(VARCHAR, t2.FECHA ,103) <= CONVERT(VARCHAR, @FechaFin ,103) AND CONVERT(VARCHAR, t2.HORA,108) <= CONVERT(VARCHAR, @TiempoFin ,108) ) AND
    		 t1.COD_PROD='001-001'
        )

       seria esa la manera correcta, bueno voy a probarlo

       Saludos....

       


    martes, 11 de septiembre de 2012 19:15
  • analzia este articulo

    [ADO.NET] Filtrar rango de fechas

    creo que podra ayudar en lo que planteas


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 11 de septiembre de 2012 21:33
  • Hola Leandro, el articulo esta bien de hecho me sirvió para otro caso que tenia con las fechas, muy bueno tu articulo, pero ha esto de las fechas también necesito agregarle el filtro con las horas, osea que filtre tanto para las fechas como para las horas, en una misma consulta.

    ya que tengo 2 campos donde guardo la fecha como la hora que se realizo la transacción y necesito filtrarlo por eso dos campos.

    Saludos,

    miércoles, 12 de septiembre de 2012 14:13