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 21-05-2008
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
concatenar fecha y hora en timestamp

Hala amigos del foro tengo el siguiente inconveniente en una tabla tengo dos campos uno fecha y hora ambos de tipo timestamp en el campo de la fecha se ha programado q solo guarde la fecha es decir seria asi '12.04.2008 00:00' y en el otro se ha guardado la hora asi '30.12.1899 15.34' por dar un ejemplo lo q deseo es unir estos dos campos en uno solo donde quede tanto la hora como la fecha y asi eliminar uno de los dos he creado el siguiente prodedimiento:

Código:
CREATE PROCEDURE ACTUALIZARFECHA 
as
declare variable fecha date;
declare variable horita time;
declare variable fechita date;
declare variable id integer;
begin
  FOR SELECT ID, Cast (FECHA as date), CAST (HORA AS DATE), CAST (HORA AS TIME)
      FROM ITEMSERVICIO INTO :ID, :FECHA, :FECHITA, :HORITA do
  BEGIN
     if (:FECHA <> :FECHITA) then
     BEGIN
        UPDATE ITEMSERVICIO SET HORA = :FECHA || :HORITA WHERE ID = :ID ;
     END
  END
end
el el problema radica en la sentencia update donde quiero guardar ya tanto la fecha de un campo como la hora del otro en un solo campo pero esta concatenación no me funciona estoy utilizando || para esto y me arroja un error, no se si existe alguna funcion q me una estos dos valores en uno solo.

Utilizo firebird 2.0 y delphi 7

Gracias
Responder Con Cita
  #2  
Antiguo 21-05-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Ya probaste con la funcion Extract?

Esto es de memoria:

Código SQL [-]
create procedure ActualizarFecha
declare variable fecha varchar(10);
declare variable horita varchar(8);
declare variable fechita varchar(10);
declare variable Id integer;
as
begin
  for
    select id, cast(fecha as varchar(10)), cast(extract(Date from Hora) as varchar(10)), 
      cast(extract(Time from Hora) as varchar(8))
      from ItemServicio into :ID, :Fecha, :Fechita, :Horita do
  begin
    if (:Fecha <> :Fechita) then
      update ItemServicio set Hora = cast((:Fecha || ' ' || :Horita) as Timestamp) where Id = :Id;
  end
end

Esto es solo una idea, no lo he probado y podría no funcionar...

Actualizando...

Leyendo la ayuda veo que se puede hacer concatenaciones de tipos Date y Time, de tal forma que:

Código SQL [-]
create procedure ActualizarFecha
declare variable fecha Date;
declare variable horita Time;
declare variable fechita Date;
declare variable Id integer;
as
begin
  for
    select id, Extract(Date from Fecha), extract(Date from Hora), extract(Time from Hora)
      from ItemServicio into :ID, :Fecha, :Fechita, :Horita do
  begin
    if (:Fecha <> :Fechita) then
      update ItemServicio set Hora = :Fecha + :Horita where Id = :Id;
  end
end


Saludos...

Última edición por maeyanes fecha: 21-05-2008 a las 17:11:39.
Responder Con Cita
  #3  
Antiguo 21-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Vlady, también se puede concatenar con el + acabo de hacer esta prueba y si funciona.

Código SQL [-]
 Select Cast(Campo1 as Date)+Cast(Campo2 as Time)
 From tabla

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 21-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, hice la prueba con un Update y si funciona el "+" para concatenar, el || solo funciona en las consultas, porque sera .

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 21-05-2008
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Gracias por sus respuestas esta es la solucion q me ha funcionado gracias a su colaboracion

Código SQL [-]
CREATE PROCEDURE ACTUALIZARFECHA
as
declare variable fecha date;
declare variable horita time;
declare variable fechita date;
declare variable id integer;
begin

  FOR SELECT ID, Cast (FECHA as date), CAST (HORA AS DATE), CAST (HORA AS TIME)
      FROM ITEMSERVICIO INTO :ID, :FECHA, :FECHITA, :HORITA do
  BEGIN
     if (:FECHA <> :FECHITA) then
     BEGIN
        UPDATE ITEMSERVICIO SET HORA = Cast(:FECHA as Date)+Cast(:HORITA as Time)
        WHERE ID = :ID ;
     END
  END
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
obtener solo la fecha en formato fecha y sin hora BlueSteel SQL 14 09-05-2008 16:42:19
formato fecha y hora a solo Fecha ozegarra Firebird e Interbase 6 22-02-2008 18:43:34
Sacar la hora de un campo TimeStamp Vlady Conexión con bases de datos 1 15-02-2007 19:07:07
Concatenar Fecha con Texto Triton Firebird e Interbase 5 20-04-2005 17:17:05
Concatenar string+fecha Jose_Pérez SQL 2 09-11-2004 22:58:58


La franja horaria es GMT +2. Ahora son las 07:40:01.


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