Ver la Versión Completa : Suma o resta de fechas
el_enigma1
31-08-2004, 00:36:04
Yo se que en SQLServer se puede sumar fechas, pero no se si se puede hacer lo mismo en interbase 6.
Se trata de sumar sumar meses o años a una fecha mediante sql, la fecha podria entrar como parametro o ya estar capturada en la base de datos.
De antemano gracias por la ayuda.
jachguate
31-08-2004, 04:11:11
Interbase tiene soporte completo para aritmética de fechas. La fecha puede o no estar en la base de datos, así como la cantidad de dias a sumar/restar de esta.
Es tan simple como:
Select 'now' + 30
form rdb$database;
Saludos.
;)
el_enigma1
02-09-2004, 20:27:44
Interbase tiene soporte completo para aritmética de fechas. La fecha puede o no estar en la base de datos, así como la cantidad de dias a sumar/restar de esta.
Es tan simple como:
Select 'now' + 30
form rdb$database;
Saludos.
;)
pero si yo quiero sumar meses es decir si yo tengo una fecha 14 de octubre del 2004 en interbase se veria como 10/14/04 y yo quiero sumarle 18 meses y que me muestre 14 de abril del 2006 o sea 4/14/06 o si le sumo solo 6 meses me muestre 14 de abril del 2005 o sea 4/14/05.
se puede hacer de esta manera?
Debi a ver sido mas especifico desde el principio.
antrax
02-09-2004, 22:49:25
checate la siguiente instrucción, la he probado en sql server y tal vez se soporte en Interbase..
DATEDIFF
Devuelve el número de límites de fecha y hora que hay entre dos fechas especificadas.
Sintaxis
DATEDIFF ( datepart , startdate , enddate )
Argumentos
datepart
Es el parámetro que indica en qué parte de la fecha se calcula la diferencia.
La tabla enumera las partes de las fechas y abreviaturas reconocidas por Microsoft® SQL Server™.
Parte de la fecha------Abreviaturas
------------------------------------------
Año-------------------yy,yyyy
Mes-------------------mm,m
Dia del Año-------------dy,y
Dia----------------------dd,d
Semana-------------------wk,ww
Horas------------------------hh
Minutos --------------------mi,n
Segundos----------------------ss,s
Milisegundos--------------------ms
startdate
Es la fecha de comienzo para el cálculo. startdate es una expresión que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha.
Puesto que smalldatetime es exacto únicamente en el minuto, cuando se utiliza un valor smalldatetime los segundos y milisegundos son siempre 0.
enddate
Es la fecha final para el cálculo. enddate es una expresión que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha.
Tipos devueltos
integer
Ejemplo
En este ejemplo se determina la diferencia en días entre la fecha actual y la fecha de publicación de los títulos de la base de datos pubs.
USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) AS no_of_daysFROM titles
el_enigma1
08-09-2004, 04:00:14
checate la siguiente instrucción, la he probado en sql server y tal vez se soporte en Interbase..
DATEDIFF
Devuelve el número de límites de fecha y hora que hay entre dos fechas especificadas.
Sintaxis
DATEDIFF ( datepart , startdate , enddate )
Argumentos
datepart
Es el parámetro que indica en qué parte de la fecha se calcula la diferencia.
La tabla enumera las partes de las fechas y abreviaturas reconocidas por Microsoft® SQL Server™.
Parte de la fecha------Abreviaturas
------------------------------------------
Año-------------------yy,yyyy
Mes-------------------mm,m
Dia del Año-------------dy,y
Dia----------------------dd,d
Semana-------------------wk,ww
Horas------------------------hh
Minutos --------------------mi,n
Segundos----------------------ss,s
Milisegundos--------------------ms
startdate
Es la fecha de comienzo para el cálculo. startdate es una expresión que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha.
Puesto que smalldatetime es exacto únicamente en el minuto, cuando se utiliza un valor smalldatetime los segundos y milisegundos son siempre 0.
enddate
Es la fecha final para el cálculo. enddate es una expresión que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha.
Tipos devueltos
integer
Ejemplo
En este ejemplo se determina la diferencia en días entre la fecha actual y la fecha de publicación de los títulos de la base de datos pubs.
USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) AS no_of_daysFROM titles
No me funciono.
rmora03
11-10-2013, 17:11:35
Hola Antrax, talvez me puedas orientar:
Estoy haciendo un procedimiento con Firebird 2.1 e IBExpert que debe calcular los intereses diarios de acuerdo a una diferencia entre fechas. He puesto en practica tu recomendacion a enigma, sin embargo al ejecutar el procedimiento me emite el siguiente mensaje: "OverFlow occurred during data type conversion. conversion error from string "7-Oct-2013" '. Te inserto parte del codigo del procedimiento para un mejor entendimiento.
SELECT FC.FECHA_VENCE, FC.MONTO_INTER_CORR
FROM FINAN_CUOTAS FC
WHERE FC.ID_FINANCIAMIENTO = :CODIGO AND FC.PERIODO_VENCE = :PERIODO
INTO :MONTO_INT_MES, :FECHA_VENCE;
d = datediff(day,:FECHA_VENCE, :FECHA_CORTE); -- d es una variable declarada como entero, fecha_corte es un parametro designado como date
if (d > 0) then
begin
MONTO_INTER_CORR_DIAS = ((:MONTO_INT_MES / :DIAS_MES) * :d);
end
Agrdezco de antemano la ayuda que me puedas (an) brindar.
Saludos
Casimiro Notevi
11-10-2013, 18:06:00
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)
Recuerda poner los tags al código fuente, ejemplo:
http://www.clubdelphi.com/images/UtilizarTAGs.png
Gracias :)
Por cierto, este hilo es de hace 13 años, crea uno nuevo siguiendo las normas del foro, gracias.
jhonny
11-10-2013, 19:27:55
Saltándome un poco las reglas, me gustaría preguntarte, ¿:FECHA_VENCE y :FECHA_CORTE, realmente son de tipo date, time o timestamp?, si no es así, quizá un cast te ayude, cambiando:
d = datediff(day,:FECHA_VENCE, :FECHA_CORTE);
por
d = datediff(day, cast(:FECHA_VENCE as DATE), cast(:FECHA_CORTE as DATE));
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.