Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-06-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Resta de Campos timestamp

Hola que tal, mi pregunta es la siguiente, existe alguna funcion en firebird que me permita restar dos campos tipo timestamp

hora_entrada y hora_salida
Responder Con Cita
  #2  
Antiguo 24-06-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por amerika111 Ver Mensaje
Hola que tal, mi pregunta es la siguiente, existe alguna funcion en firebird que me permita restar dos campos tipo timestamp

hora_entrada y hora_salida
He tratado de usar datediff pero no lo reconoce como funcion....
Responder Con Cita
  #3  
Antiguo 24-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código SQL [-]
horaentrada - horasalida

Simplemente
Responder Con Cita
  #4  
Antiguo 24-06-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Código SQL [-]horaentrada - horasalida



Simplemente

lo he utilizado de esa manera y el resultado es el siguiente

-0.3264

teniendo en cada campo respectivamente
hora_entrada 1899-12-30 08:00:00 a.m.
hora_salidada 1899-12-30 03:50:00 p.m.
Responder Con Cita
  #5  
Antiguo 24-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Esta sentencia resta dos campos TIMESTAMP y te devuelve el resultado en segundos.

Código SQL [-]
SELECT CAST(HORA_SALIDA AS TIME) - CAST(HORA_ENTRADA AS TIME) AS RESTA FROM HORARIOS
Pero no sé si es lo que buscas...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 24-06-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Esta sentencia resta dos campos TIMESTAMP y te devuelve el resultado en segundos.


Código SQL [-]
SELECT CAST(HORA_SALIDA AS TIME) - CAST(HORA_ENTRADA AS TIME) AS RESTA FROM HORARIOS




Pero no sé si es lo que buscas...

Saludos.
Utilizandolo de esa manera arroja un resultado de 28,200.0000
esos me indicas que son segundo.. para poder convertirlo a horas, lo que necesito seria saber cuantas horas hay entre la entrada y salida
Responder Con Cita
  #7  
Antiguo 24-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Los campos de tipo timestamp son realmente double, la parte entera corresponde a los días pasados desde el 15.12.1899 creo recordar y la parte decimal es la hora.
Responder Con Cita
  #8  
Antiguo 24-06-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Teniendo en cuenta que cada día es una unidad entera, entonces si quieres calcular la diferencia en horas entre dos timestamps, solo tienes que multiplicar el resultado por 24 (24 horas por día).

Es decir, si no te he entendido mal, esta es la consulta que quieres :

(horaentrada - horasalida) * 24

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #9  
Antiguo 24-06-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Los campos de tipo timestamp son realmente double, la parte entera corresponde a los días pasados desde el 15.12.1899 creo recordar y la parte decimal es la hora.

lo que pasa que lo que se ingresa en esos campos es nada mas la hora y la fecha como es nula por default se coloca la 15.12.1899


pero ya con esto ya me convierte los segundos a horas

Código SQL [-]
SELECT  ((CAST(LUN_SALIDA AS TIME) - CAST(LUN_ENTREDA AS TIME)))/3600 AS RESTA FROM A_PRENOMINAS WHERE ID=1
Responder Con Cita
  #10  
Antiguo 24-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por amerika111 Ver Mensaje
lo que pasa que lo que se ingresa en esos campos es nada mas la hora y la fecha como es nula por default se coloca la 15.12.1899
Claro, por eso siempre tendrá un 0,xxxxxxxxx

Si usas el dialecto 3 entonces podrás usar campos date, time o timestamp indistintamente.
Responder Con Cita
  #11  
Antiguo 24-06-2011
[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...

Si estás usando solo el tiempo, ¿por qué usas campos Timestamp? Lo mejor sería que uses campos Time y así no te preocupas por la parte de la fecha.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #12  
Antiguo 25-06-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Cita:
Empezado por amerika111 Ver Mensaje
pero ya con esto ya me convierte los segundos a horas

Código SQL [-]
SELECT  ((CAST(LUN_SALIDA AS TIME) - CAST(LUN_ENTREDA AS TIME)))/3600 AS RESTA FROM A_PRENOMINAS WHERE ID=1
Anteriormente ya te indiqué una solución mucho más simple :

Código SQL [-]
SELECT (LUN_SALIDA - LUN_ENTREDA) * 24 AS RESTA FROM A_PRENOMINAS WHERE ID=1

La parte decimal del Timestamp representa la hora como fracción del día, por tanto solo tienes que multiplicarlo por 24 para reflejarlo en horas.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 25-06-2011 a las 19:42:40.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Resta entre campos datetime ale_metall Varios 3 22-10-2007 20:15:19
Condición Where con resta de 2 campos Johnny Q SQL 6 13-01-2006 18:02:57
Busqueda en campos tipo timestamp gescoto99 SQL 1 14-07-2005 12:17:16
campos time/timestamp Giniromero Firebird e Interbase 15 16-12-2003 14:26:23
Resta/Campos Tipo Time UTECYBER OOP 1 15-12-2003 20:02:02


La franja horaria es GMT +2. Ahora son las 18:26:55.


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