![]() |
Sumarle a una fecha - hora (timestamp) una cierta cantidad de horas
Buenas, deseo que en una sql me haga la siguiente operación:
A cierta fecha (fecha y hora) le sume una cantidad de horas Ejemplo: 15/07/2010 19:21:00 + 3 (horas) = 15/07/2010 22:21:00 ¿Cómo puedo hacer esto dentro del select? Estuve probando con dateadd y no consigo buenos resultados. Uso Firebird 2.1 gracias. |
Bueno, conseguí solucionar el problema usando una UDF. La verdad es que funciona bien pero sería bueno si hay una forma de hacerlo sin funciones externas.
Bien, gracias.
|
¿Y qué hace esa udf?
|
Cita:
addhour(fecha_hora, hora) --> le suma las horas a la fecha. 17/07/2010 20:52 + 3 = 17/07/2010 23:52 |
Es que si a una timestamp (fechahora) le sumas 3, por ejemplo, se lo suma a los días, no a las horas.
Un campo fechahora es un valor como, por ejemplo: 36468,36587491222 La parte entera son los días transcurridos desde 31-12-1899 y la parte decimal corresponde a las horas. Entonces si 1 lo divides entre 24 te da el resultado de lo que ocupa una hora, multiplicado por 3 horas, el resultado sería: 0.125 Por lo tanto, si quieres sumar 3 horas a una fechahora, debes sumar esa cantidad: now + 0.125 = fechahora dentro de 3 horas Según tu ejemplo: 17/07/2010 20:52 + 3 = 17/07/2010 23:52 Escribo de memoria, tendría que confirmarlo, pero creo que es así. |
Gracias compañeros, entendí.
|
Cita:
Dicho sea de paso: desde Firebird 2.1 ya casi no hay necesidad de registrar UDFs... ya que en su enorme mayoría vienen de "fábrica" incorporadas al motor. Distinto es en F1.5 en donde se necesita registrarlas. Las UDFs se estabilizaron durante el desarrollo de 2.x y además, desde (si no me falla la memoria) 2.5 se tiene pensado mejorar este punto y estandarizarlo ofreciendo los medios y herramientas para ello. Saludos, |
¿Pero hay alguna que sume horas?, ¿cómo lo hace?
|
Cita:
¿Me lo preguntas a mi? :confused: Internamente pues no sabría decir como hace la UDF para sumarle las horas :o.... de que si estoy seguro es que SI EXISTE ESTA UDF... ¡Esta disponible desde F1 para Windows y desde F1.5 en Linux. ;) Cita:
¿O será que estoy interpretando mal tu pregunta? :confused: Me resulta extraño tu comentario amigo, sabiendo que tu conoces mucho de Firebird. Saludos, |
Bueno, más bien me preguntaba cómo sumará horas esa función, pero ya lo he mirado, suma segundos:
|
La franja horaria es GMT +2. Ahora son las 02:07:03. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi