Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-08-2004
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
Poder: 20
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
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
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
Poder: 20
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
Poder: 0
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
Poder: 20
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: 7
Poder: 0
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 offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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.
Responder Con Cita
Respuesta



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 01:56:43.


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