none
Calcular fechas RRS feed

  • Pregunta

  • Hola a todos,

       tengo un campo FECHA (datetime) y un campo ORDENARANTES (int). Es un sistema de órdenes donde en la fecha tengo la fecha y hora de entrega de un pedido y en OrdenarAntes cuánto tiempo antes tengo para poder realizar la orden. En otras palabras, si FECHA = 31-08-2011 12:30:00 y ORDENARANTES = 10, la fecha y hora última para hacer el pedido es 31-08-2011 02:30:00.

       La pregunta es: ¿cómo puedo con SQL calcular esa fecha? Probé con datadiff pero no le encontré la vuelta.

       Vale aclarar que es en SQL 2005.

       Una pregunta extra: por qué esta sentencia da error en SQL 2005 y no en 2008?

    SELECT DATEDIFF(day, '2007-05-07 09:53:01.0376635'
        , '2007-05-08 09:53:01.0376635');

       Gracias.


    Mauricio - Copenhague - Dinamarca
    miércoles, 31 de agosto de 2011 10:35

Respuestas

  • No es con DATEDIFF, sino con DATEADD:

    DECLARE @fecha DATETIME = '20110831 12:30:00'
    	, @Ordenante INT = 10;
    	
    SELECT DATEADD(hh, @Ordenante * -1, @fecha) AS nuevaFecha;
    

    En cuanto a tu segunda pregunta, falla por la precisión: en 2005 la precisión del tipo de datos DATETIME llega a 0.00333 segundos, mientras que en 2008 tenemos DATETIME2 que tiene una precisión de 100 nanosegundos

    • Marcado como respuesta TDCSoftware miércoles, 31 de agosto de 2011 10:47
    miércoles, 31 de agosto de 2011 10:43

Todas las respuestas

  • No es con DATEDIFF, sino con DATEADD:

    DECLARE @fecha DATETIME = '20110831 12:30:00'
    	, @Ordenante INT = 10;
    	
    SELECT DATEADD(hh, @Ordenante * -1, @fecha) AS nuevaFecha;
    

    En cuanto a tu segunda pregunta, falla por la precisión: en 2005 la precisión del tipo de datos DATETIME llega a 0.00333 segundos, mientras que en 2008 tenemos DATETIME2 que tiene una precisión de 100 nanosegundos

    • Marcado como respuesta TDCSoftware miércoles, 31 de agosto de 2011 10:47
    miércoles, 31 de agosto de 2011 10:43
  • Perfecto, Carlos, muchas gracias!
    Mauricio - Copenhague - Dinamarca
    miércoles, 31 de agosto de 2011 10:47