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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2004
Jordy Jordy is offline
Miembro
 
Registrado: may 2003
Posts: 51
Poder: 21
Jordy Va por buen camino
Consulta de fechas y horas con Firebird

Tengo una aplicación en Delphi atacando a un a DB Firebird. Esta aplicación esta en red y quiero saber:

-Quiero guardar en una tabla la hora y la fecha por separado de una modificación de información, pero la quiero coger del servidor (un PC dedicado como tal y con Windows 2000 Server en donde se encuentra Firebird) ya que no quiero que nadie me cambie la fecha y la hora de su pc guardando así cada uno lo que quiera y la que mande siempre sea la del servidor.

Jordy.
Responder Con Cita
  #2  
Antiguo 04-10-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Cool

Hola, espero haber entendido bien tu pregunta.

Citado por Jordy:
Cita:
-Quiero guardar en una tabla la hora y la fecha por separado de una modificación de información, pero la quiero coger del servidor
http://www.clubdelphi.com/foros/show...tartkill+fecha

Espero sirva....

Your friend,

StartKill
Lima-perú
Responder Con Cita
  #3  
Antiguo 04-10-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues en FireBird a parte del tipo TimeStamp, tienes Time y Date, por lo tanto si creas un campo de tipo Date y otro de tipo Time, no tienes mas que utilizar la función Date y Time de Delphi si lo que quieres guardar es la hora y fecha actuales y sino datos apropiados y guardarlos en este tipo de campos.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 06-10-2004
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Saludos
Soy nuevo en el foro, espero poder ayudar en lo que pueda...
Ahora con respe a las fechas en delphi y firebird (Interbase), yo lo que realizo para no tener problemas en el momento de guardar un dato tipo date, tipo time o tipo timestamp siempre realizo un paso de mas, ya sea en el codigo de mi aplicacion o en la SQL.

1. en el Codigo:


var hora : time;
char_hora : varchar;
begin
hora := strtotime(14:00); // siempre uso el formato de 24 horas
dataset.fieldbyname('horaDB').asdatatime := hora;
char_hora := timetostr(dataset.fieldbyname('horaDB').asdatatime);
hora := strtotime(char_hora) + strtotime('00:15');
dataset.fieldbyname('horaDB').asdatatime := hora;
{ es un poco molesto realizar tantas conversiones pero asi me aseguro de no tener problemas con la configuración regional de cada PC ya que en ocaciones queda almacenado como 10:00 a.m. y en otros como 10:00 AM y de verdad que trae problemas con locates y con tipo de datos}
end;

2. desde una sql
select * from TTablaXY where cast(horaDB as time) =cast(arrametro_envidao as time)

/* aunque el campo horaDB sea de tipo time, es mejor realizar el cast ya que en ocaciones no funciona bien sin este...*/


Espero que sea de utilidad
Responder Con Cita
  #5  
Antiguo 07-10-2004
Jordy Jordy is offline
Miembro
 
Registrado: may 2003
Posts: 51
Poder: 21
Jordy Va por buen camino
Wink Consulta de fechas y horas con Firebird

Muchas grácias me funciona todo correctamente.

Jordy.
Responder Con Cita
  #6  
Antiguo 07-10-2004
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Cita:
Empezado por RONPABLO
1. en el Codigo:


var hora : time;
char_hora : varchar;
begin
hora := strtotime(14:00); // siempre uso el formato de 24 horas
dataset.fieldbyname('horaDB').asdatatime := hora;
char_hora := timetostr(dataset.fieldbyname('horaDB').asdatatime);
hora := strtotime(char_hora) + strtotime('00:15');
dataset.fieldbyname('horaDB').asdatatime := hora;
{ es un poco molesto realizar tantas conversiones pero asi me aseguro de no tener problemas con la configuración regional de cada PC ya que en ocaciones queda almacenado como 10:00 a.m. y en otros como 10:00 AM y de verdad que trae problemas con locates y con tipo de datos}
end;
No tiene sentido nada de lo que hace ese codigo, ademas de resultar una perdida de ciclos de reloj al realizar tantas conversiones, los tipos fechas y horas no se guardan en formato humano con "AM" o "am" etc, asi que es imposible que un campo guarde unas veces 10:00 AM y otras 10:00 am.
En concreto las variables datetime guardan un numero en punto flotante de modo que el el numero 0 representa las 12 de la noche y el numero 0.5 representa las 12:00 del mediodia por ejemplo. Asi que no hay necesida de conversiones. Despues los servidores de base de datos segun que servidor sea puede utilizar este mismo formato, o algun otro pero siempre con la misma logica: se guarda un numero binario indicado el numero de segundos, o de milisegundos, etc..
Que aparezcan en pantalla los valores con un AM o am , es una cuestion de representacion en el momento de realizar la impresion que nada tiene que ver con el valor guardado realmente en la variable o campo.

Podrias explicar la logica de esas conversiones ?

Saludos
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 13:31: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