none
Filtrar Fecha en Sql server 2008 RRS feed

  • Pregunta

  • En una tabla de una base de datos tengo un campo fecha datetime:  2013-02-01 00:00:00.000.

    Necesito filtrar dada una fecha, pero sin la hora. 

    La siguiente líneas muestro lo que hago, pero no obtengo los resultados. Que estoy haciendo mal?

    @d_FechaObs='2013-02-01 00:00:00.000'

    DECLARE @convfecha AS date

    SET @convfecha=CONVERT(date,@d_FechaObs,105)

    BEGIN TRAN LeerR_OBs
    BEGIN try
    DECLARE TABLES_CURSOR CURSOR FOR SELECT Lectivo, Utilizado, ObsvMatri, convert(date, FechaObs,105)  FROM ObsvMatri  WHERE  (CONVERT(date,FechaObs,105) = @convfecha)
    OPEN TABLES_CURSOR
    FETCH NEXT FROM TABLES_CURSOR
    INTO @Tempo_lectivo,@b_utilizado,@Tempo_observa,@timeconvfecha
    WHILE @@FETCH_STATUS = 0
    BEGIN
    print @Tempo_lectivo
    PRINT @b_utilizado
    FETCH NEXT FROM TABLES_CURSOR
    FETCH NEXT FROM TABLES_CURSOR INTO @Tempo_lectivo, @b_utilizado, @Tempo_observa, @timeconvfecha
    END
    CLOSE TABLES_CURSOR
    DEALLOCATE TABLES_CURSOR
    COMMIT TRAN LeerR_OBs
    END Try
    BEGIN Catch
    PRINT ''
    Rollback TRAN LeerR_OBs
    END Catch


    martes, 26 de marzo de 2013 5:40

Respuestas

  • segun veo, creo que te sobra un FETCH NEXT TABLES_CURSOR....

    FETCH NEXT FROM TABLES_CURSOR <--- sobra este??
    FETCH NEXT FROM TABLES_CURSOR INTO @Tempo_lectivo, @b_utilizado, @Tempo_observa, @timeconvfecha


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta Campeon_01 miércoles, 3 de abril de 2013 2:00
    domingo, 31 de marzo de 2013 14:21
  • De todas formas... por qué has incluido una transacción??? Yo la eliminaría...

    Prueba este código

    @d_FechaObs='2013-02-01 00:00:00.000'
    
    DECLARE @convfecha AS date
    
    SET @convfecha=CONVERT(date,@d_FechaObs,105)
    
    DECLARE TABLES_CURSOR CURSOR FOR SELECT Lectivo, Utilizado, ObsvMatri, convert(date, FechaObs,105)  FROM ObsvMatri  WHERE  (CONVERT(date,FechaObs,105) = @convfecha)
    OPEN TABLES_CURSOR
    FETCH NEXT FROM TABLES_CURSOR
    INTO @Tempo_lectivo,@b_utilizado,@Tempo_observa,@timeconvfecha
    WHILE @@FETCH_STATUS = 0
    BEGIN
    	print @Tempo_lectivo
    	PRINT @b_utilizado
    	FETCH NEXT FROM TABLES_CURSOR INTO @Tempo_lectivo, @b_utilizado, @Tempo_observa, @timeconvfecha
    END
    CLOSE TABLES_CURSOR
    DEALLOCATE TABLES_CURSOR


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta Campeon_01 miércoles, 3 de abril de 2013 2:00
    domingo, 31 de marzo de 2013 14:23
  • En una tabla de una base de datos tengo un campo fecha datetime:  2013-02-01 00:00:00.000.

    Necesito filtrar dada una fecha, pero sin la hora. 

    La siguiente líneas muestro lo que hago, pero no obtengo los resultados. Que estoy haciendo mal?

    @d_FechaObs='2013-02-01 00:00:00.000'

    DECLARE @convfecha AS date

    SET @convfecha=CONVERT(date,@d_FechaObs,105)

    BEGIN TRAN LeerR_OBs
    BEGIN try
    DECLARE TABLES_CURSOR CURSOR FOR SELECT Lectivo, Utilizado, ObsvMatri, convert(date, FechaObs,105)  FROM ObsvMatri  WHERE  (CONVERT(date,FechaObs,105) = @convfecha)
    OPEN TABLES_CURSOR
    FETCH NEXT FROM TABLES_CURSOR
    INTO @Tempo_lectivo,@b_utilizado,@Tempo_observa,@timeconvfecha
    WHILE @@FETCH_STATUS = 0
    BEGIN
    print @Tempo_lectivo
    PRINT @b_utilizado
    FETCH NEXT FROM TABLES_CURSOR
    FETCH NEXT FROM TABLES_CURSOR INTO @Tempo_lectivo, @b_utilizado, @Tempo_observa, @timeconvfecha
    END
    CLOSE TABLES_CURSOR
    DEALLOCATE TABLES_CURSOR
    COMMIT TRAN LeerR_OBs
    END Try
    BEGIN Catch
    PRINT ''
    Rollback TRAN LeerR_OBs
    END Catch

    Saludos:

    La transacción la utilizo porque dependiendo del resultado, necesito eliminar, actualizar o insertar.

    Luego de revisar, encontré que la tabla el formato de fecha variaba con el que introducía manualmente (dd/mm/año con mm/dd/año).

    • Marcado como respuesta Campeon_01 miércoles, 3 de abril de 2013 2:00
    miércoles, 3 de abril de 2013 2:00

Todas las respuestas

  • segun veo, creo que te sobra un FETCH NEXT TABLES_CURSOR....

    FETCH NEXT FROM TABLES_CURSOR <--- sobra este??
    FETCH NEXT FROM TABLES_CURSOR INTO @Tempo_lectivo, @b_utilizado, @Tempo_observa, @timeconvfecha


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta Campeon_01 miércoles, 3 de abril de 2013 2:00
    domingo, 31 de marzo de 2013 14:21
  • De todas formas... por qué has incluido una transacción??? Yo la eliminaría...

    Prueba este código

    @d_FechaObs='2013-02-01 00:00:00.000'
    
    DECLARE @convfecha AS date
    
    SET @convfecha=CONVERT(date,@d_FechaObs,105)
    
    DECLARE TABLES_CURSOR CURSOR FOR SELECT Lectivo, Utilizado, ObsvMatri, convert(date, FechaObs,105)  FROM ObsvMatri  WHERE  (CONVERT(date,FechaObs,105) = @convfecha)
    OPEN TABLES_CURSOR
    FETCH NEXT FROM TABLES_CURSOR
    INTO @Tempo_lectivo,@b_utilizado,@Tempo_observa,@timeconvfecha
    WHILE @@FETCH_STATUS = 0
    BEGIN
    	print @Tempo_lectivo
    	PRINT @b_utilizado
    	FETCH NEXT FROM TABLES_CURSOR INTO @Tempo_lectivo, @b_utilizado, @Tempo_observa, @timeconvfecha
    END
    CLOSE TABLES_CURSOR
    DEALLOCATE TABLES_CURSOR


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta Campeon_01 miércoles, 3 de abril de 2013 2:00
    domingo, 31 de marzo de 2013 14:23
  • En una tabla de una base de datos tengo un campo fecha datetime:  2013-02-01 00:00:00.000.

    Necesito filtrar dada una fecha, pero sin la hora. 

    La siguiente líneas muestro lo que hago, pero no obtengo los resultados. Que estoy haciendo mal?

    @d_FechaObs='2013-02-01 00:00:00.000'

    DECLARE @convfecha AS date

    SET @convfecha=CONVERT(date,@d_FechaObs,105)

    BEGIN TRAN LeerR_OBs
    BEGIN try
    DECLARE TABLES_CURSOR CURSOR FOR SELECT Lectivo, Utilizado, ObsvMatri, convert(date, FechaObs,105)  FROM ObsvMatri  WHERE  (CONVERT(date,FechaObs,105) = @convfecha)
    OPEN TABLES_CURSOR
    FETCH NEXT FROM TABLES_CURSOR
    INTO @Tempo_lectivo,@b_utilizado,@Tempo_observa,@timeconvfecha
    WHILE @@FETCH_STATUS = 0
    BEGIN
    print @Tempo_lectivo
    PRINT @b_utilizado
    FETCH NEXT FROM TABLES_CURSOR
    FETCH NEXT FROM TABLES_CURSOR INTO @Tempo_lectivo, @b_utilizado, @Tempo_observa, @timeconvfecha
    END
    CLOSE TABLES_CURSOR
    DEALLOCATE TABLES_CURSOR
    COMMIT TRAN LeerR_OBs
    END Try
    BEGIN Catch
    PRINT ''
    Rollback TRAN LeerR_OBs
    END Catch

    Saludos:

    La transacción la utilizo porque dependiendo del resultado, necesito eliminar, actualizar o insertar.

    Luego de revisar, encontré que la tabla el formato de fecha variaba con el que introducía manualmente (dd/mm/año con mm/dd/año).

    • Marcado como respuesta Campeon_01 miércoles, 3 de abril de 2013 2:00
    miércoles, 3 de abril de 2013 2:00