FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
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 |
#2
|
|||
|
|||
Cita:
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 |
#3
|
||||
|
||||
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 |
|
|
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 |
|