Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-11-2006
Avatar de Alexander
Alexander Alexander is offline
Miembro
 
Registrado: may 2004
Posts: 235
Poder: 20
Alexander Va por buen camino
Cool La mejor forma de utilizar las horas en SQLServer

Hola a todos.

Estoy buscando cual es la mejor forma de utilizar las horas en SQL Server.

Tengo una tabla que tiene un campo llamado Hora y es de tipo DateTime.

Si almaceno la hora por medio de ADO con un parámetro, me almacena la poniendole am o pm.

Ejemplo 04:00:00 p.m.

Si lo hago formado la instrucción como una cadena, me escribe la fecha más vieja del sistema y seguido la hora que coloque.

Ejemplo 01/01/1989 04:00:00 p.m.

Cuando quiero trabajar las horas es muy complicado, hacer compraciones, actualizaciones por medio de esa hora, etc.

Cual es la mejor forma de utilizar las horas tanto en la base de datos como en desarrollo?

Gracias por leer este mensaje y por sus comentarios.

Alexander.
__________________
Cielos azules
Responder Con Cita
  #2  
Antiguo 08-11-2006
oscarnoe oscarnoe is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
oscarnoe Va por buen camino
Cita:
Empezado por Alexander
Hola a todos.

Estoy buscando cual es la mejor forma de utilizar las horas en SQL Server.

Tengo una tabla que tiene un campo llamado Hora y es de tipo DateTime.

Si almaceno la hora por medio de ADO con un parámetro, me almacena la poniendole am o pm.

Ejemplo 04:00:00 p.m.

Si lo hago formado la instrucción como una cadena, me escribe la fecha más vieja del sistema y seguido la hora que coloque.

Ejemplo 01/01/1989 04:00:00 p.m.

Cuando quiero trabajar las horas es muy complicado, hacer compraciones, actualizaciones por medio de esa hora, etc.

Cual es la mejor forma de utilizar las horas tanto en la base de datos como en desarrollo?

Gracias por leer este mensaje y por sus comentarios.

Alexander.
Hola alexander,

el uso es el correcto y ademas con las funciones que incorpora SQL Server en T-SQL tienes un gran abanico de posibilidades. El problema es el formateo que le das a la salida (o lo que te muestra la aplicacion que uses para ver la tabla).Puede que sea la configuracion regional que tiene windows o el mismo servidor de sql (ahora mismo no puedo darte mas referencias sobre el tema, y puede que me equivoque al respecto).

Para trabajar implicitamente con la hora de un campo datetime en las consultas o en T-SQL tienes que usar la funcion datepart de SQL Server.(http://support.microsoft.com/kb/186265).

Varios ejemplos:

Para filtrar un tabla de eventos y saber que X que pasó a las 12:xx

Select * from eventos where datepart(h,fecha)=12

Para saber cuantos articulos se han vendido en franja horaria (revisando para ver si alguien habia contestado a esta pregunta me tope con esta otra que ilustro aqui para sql server).

Select datepart(h, fecha) as Hora, sum(importe) as Facturacion from lineasFac
group by datepart(h,fecha)

Para crear un agregado de cuantos eventos de cada tipo han sucedido a las 12:xx:
Select tipo_Evento, count(eventos.ID) from eventos where datepart(h,fecha)=12
group by tipo_Evento

lo mismo, pero diferente:

Select tipo_Evento, count(eventos.ID) from eventos
group by tipo_Evento
having datepart(h,fecha)=12

Para actualizar los eventos que ocurrieron a las 12 y marcarlos como revisados:

Update Eventos set revisado=1 where datepart(h,fecha)=12

Y ya por parte de delphi la libreria dateutils te ofrece todo lo que necesites para las fechas/horas:

-Extraccion de "porciones" o unidades de tiempo del datetime:
dateof / timeof / hourof / minuteof / etc...

-Comparacion:
samedatetime / sameDate / sameTime
compareDateTime / CompareDate / CompareTime

-Incremento/Decremento (+- segun precises sumar o restar la unidad de tiempo)
IncYear / IncMonth / IncWeek / IncDay / IncHour / IncMonth / etc...

Dateutils tiene mucha "miga". Dale un vistazo.

Espero que te sirva de ayuda.

Oscar Noe
Responder Con Cita
  #3  
Antiguo 08-11-2006
Avatar de Alexander
Alexander Alexander is offline
Miembro
 
Registrado: may 2004
Posts: 235
Poder: 20
Alexander Va por buen camino
Cool Es lo que necesito

Oscar, Muchas gracias por la información, realmente me sirve y la empezaré a trabajar.

Hice unas pequeñas pruebas y funcionó. Y veo que las ayudas en este campo son más grandes de lo que pensaba.

Nuevamente muchas gracias.

Alexander
__________________
Cielos azules
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
cual es la mejor forma ? martita Varios 14 07-07-2005 19:35:55
Mejor forma de hacer un reloj istradlin Varios 3 18-05-2005 16:51:47
La mejor forma para formato moneda jbetancurt Firebird e Interbase 0 17-11-2004 16:53:11
Que forma es mejor ??? chele Conexión con bases de datos 1 19-03-2004 15:36:13
Mejor forma de conectarse a FireBird? brandolin Firebird e Interbase 1 19-12-2003 11:15:04


La franja horaria es GMT +2. Ahora son las 18:06:12.


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