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 25-05-2005
Citlalli Citlalli is offline
No confirmado
 
Registrado: may 2005
Posts: 40
Poder: 0
Citlalli Va por buen camino
problemas con campo timestamp

Hola, mi problema es que tengo un campo string y ahi guardo la hora mediante el código:

Add('INSERT INTO Agenda (');
Add('Hora)');
Add('Values (');
Add(sep + FormatDateTime('h:mm am/pm',Time) + sep + ')');

la constante sep = #39 para poner las comillas

el problema es que una vez insertada la informacion, no puedo ordenar el query de consulta por este campo(me lo ordena mal), asi que le cambie el tipo a timestamp, pero no encuentro como guardarlo, me da errores, si alguien me pudiera ayudar se los voy a agradecer.

saludos
Responder Con Cita
  #2  
Antiguo 26-05-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Ayuda Delphi
Unit

SysUtils

Category

date/time routines

function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;

Description

Call TimeStampToDateTime to convert a TTimeStamp value into a TDateTime value. TTimeStamp values represent time as separate date and time values, where the date is the number of calendar days since the start of the current calendar (that is, January 1, 0001 would have a value of 1), and time is the number of milliseconds since midnight. TDateTime values represent time as the number of days (including fractional days) that have elapsed since 12:00 am on December 30, 1899.

Unit

SysUtils

Category

date/time routines

function DateTimeToTimeStamp(DateTime: TDateTime
): TTimeStamp;

Description

Call DateTimeToTimeStamp to convert a TDateTime value into a TTimeStamp value.
Deberías usar TimeStampToDateTime para rescatar valores de la base de datos y mostrarlo en un TdatetimePicker (por ejemplo)

Deberías usar DateTimeToTimeStamp para convertir una fecha y guardarla en la base de datos.

PosData: olvidate de la comilla simple cuando trabajes con TimeStamp.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 31-05-2005
Citlalli Citlalli is offline
No confirmado
 
Registrado: may 2005
Posts: 40
Poder: 0
Citlalli Va por buen camino
Gracias lepe, lo voy a probar y te aviso

saludos
Responder Con Cita
  #4  
Antiguo 02-06-2005
Citlalli Citlalli is offline
No confirmado
 
Registrado: may 2005
Posts: 40
Poder: 0
Citlalli Va por buen camino
les voy a explicar paso a paso mi problema, hay que tomar en cuenta que utilizo interbase 6 (el que viene con delphi 6) y lo que estoy haciendo es una agenda por lo tanto es super importante el buen manejo de las horas:

1: di de alta en mi base de datos un campo de tipo varchar llamado "Hora".

2: guardo en dicho campo la hora de la siguiente manera:

Código:
 
			  Add('INSERT INTO Agenda (');
			  Add('Hora,');
			  Add('Values (');
			  Add(sep + FormatDateTime('h:mm am/pm',Time) + sep + ',');
3: quiero hacer un ORDER BY por dicho campo y me encuentro conque no lo hace.

4: supuse que por ser de tipo varchar no lo ordena en orden cronologico, asi que le cambio el tipo al campo y se lo pongo timestamp.

5: intenté guardar el dato de la misma forma que arriba pero me manda el error: "error conversion for string"

6: investigue aqui en el foro y algien me dijo que hiciera la incersión por medio de parámetros:

Código:
 
				 ParamByName('Hora').AsTime := Time;
7: efectivamente, funcionó... pero al mostrar el campo en un DBGrid lo muestra asi "01/06/2005 06:20:36 pm" y yo solo quiero que me muestre la hora (06:20 pm)

8: posteriormente quiero poder comparar dicha hora contra otra, esto con el fin de hacer avisos al cliente en cierta hora.

espero haberme explicado bien, en fin, espero sus respuestas muchas gracias

saludos
Responder Con Cita
  #5  
Antiguo 02-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Unidad Controls
TDateTime = type Double;

TDate = type TDateTime;

TTime = type TDateTime;
Como ves el problema es que en delphi todo son Tdatetimes, y es más, te aconsejo que uses siempre formato de Fecha y hora cuando tengas que comparar, sumar y/o restar, ya que delphi tiene una amplia biblioteca de funciones para estos menesteres en DateUtils. Deja que guarde la fecha y hora, así cuando tengas que pedir un listado ordenado por fecha, no tendrás problemas.

Lo único que se me ocurre en este momento es usar el OnGetText del campo para que devuelva solo la parte horaria.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 03-06-2005
Citlalli Citlalli is offline
No confirmado
 
Registrado: may 2005
Posts: 40
Poder: 0
Citlalli Va por buen camino
gracias lepe, me podrias mostrar un ejemplo?


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 09:51:56.


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