Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 31-08-2004
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
el_enigma1 Va por buen camino
Suma o resta de fechas

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.
Responder Con Cita
  #2  
Antiguo 31-08-2004
Avatar de jachguate
jachguate jachguate is offline
Usuario registrado
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.242
jachguate Va por buen camino
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:
Código SQL [-]
Select 'now' + 30
  form rdb$database;

Saludos.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 02-09-2004
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
el_enigma1 Va por buen camino
Cita:
Empezado por jachguate
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:
Código SQL [-]
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.
Responder Con Cita
  #4  
Antiguo 02-09-2004
Avatar de antrax
antrax antrax is offline
Miembro
 
Registrado: ago 2004
Ubicación: Escobedo N.L.Mx
Posts: 10
antrax Va por buen camino
Espero y sirva...

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
__________________
I.S.C. Diódoro Guillermo Avilez Alanís
Consultoria y Desarrollo de Tecnologías de Información
TEL +52 8180 296184.
diodoro.avilez@takata.com

Última edición por antrax fecha: 02-09-2004 a las 22:55:14.
Responder Con Cita
  #5  
Antiguo 08-09-2004
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
el_enigma1 Va por buen camino
Cita:
Empezado por antrax
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.
Responder Con Cita
  #6  
Antiguo 11-10-2013
rmora03 rmora03 is offline
Registrado
 
Registrado: feb 2008
Posts: 4
rmora03 Va por buen camino
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 / IAS_MES) * :d);
end

Agrdezco de antemano la ayuda que me puedas (an) brindar.

Saludos
Responder Con Cita
  #7  
Antiguo 11-10-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador gruñón
 
Registrado: sep 2004
Ubicación: Planeta Agua
Posts: 22.708
Casimiro Notevi Va camino a la fama
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Recuerda poner los tags al código fuente, ejemplo:



Gracias


Por cierto, este hilo es de hace 13 años, crea uno nuevo siguiendo las normas del foro, gracias.
__________________
/* Saludos
*/
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código

$ sudo mv system > /dev/null

Responder Con Cita
  #8  
Antiguo 11-10-2013
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 6.464
jhonny Va por buen camino
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:

Código SQL [-]
d = datediff(day,:FECHA_VENCE, :FECHA_CORTE);

por

Código SQL [-]
d = datediff(day, cast(:FECHA_VENCE as DATE), cast(:FECHA_CORTE as DATE));
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:51:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi