Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

existe funcion hora para sql server en una consulta?

Estas en el tema de existe funcion hora para sql server en una consulta? en el foro de SQL Server en Foros del Web. Hola a todos...estoy tratando de hacer un select a una tabla para traer unos eventos que empiezan de acuerdo a una hora determinada El parametro ...
  #1 (permalink)  
Antiguo 24/10/2011, 09:47
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
existe funcion hora para sql server en una consulta?

Hola a todos...estoy tratando de hacer un select a una tabla para traer unos eventos que empiezan de acuerdo a una hora determinada
El parametro que paso a la consulta es la hora y el dia

Código SQL:
Ver original
  1. CREATE TABLE [dbo].[PCPROCIR](
  2.     [PSANUMERO] [CHAR](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  3.     [SALCODIGO] [CHAR](5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  4.     [GPACODIGO] [CHAR](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  5.     [AINCONSEC] [CHAR](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  6.     [FECINIPROC] [datetime] NOT NULL,
  7.     [FECFINPROC] [datetime] NOT NULL,
  8.     [IDCIRUGIA] [VARCHAR](4) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  9.     [ANECODIGO] [VARCHAR](4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  10.     [DATPROCE] [VARCHAR](3000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  11.     [CODQXP] [CHAR](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  12.     [CODQX1] [CHAR](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  13.     [CODAYU] [CHAR](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  14.     [CODANE] [CHAR](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  15.     [FECPROG] [datetime] NULL,
  16.     [USUPROG] [VARCHAR](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  17.     [PCAESTADO] [CHAR](1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  18.     [USUCUMP] [VARCHAR](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  19.     [FECCUMP] [datetime] NULL,
  20.     [USUCANC] [VARCHAR](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  21.     [FECCANC] [datetime] NULL,
  22.     [DCACODIGO] [CHAR](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  23.     [MOTANU] [VARCHAR](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  24.     [USUANU] [VARCHAR](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
  25.     [FECAUNU] [datetime] NULL,
  26.  CONSTRAINT [PK_PCPROCIR] PRIMARY KEY CLUSTERED
  27. (
  28.     [PSANUMERO] ASC
  29. )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
  30. ) ON [PRIMARY]
  31.  
  32. GO
  33. SET ANSI_PADDING OFF
  34. GO
  35. USE [DGEMPRES10]
  36. GO
  37. ALTER TABLE [dbo].[PCPROCIR]  WITH CHECK ADD  CONSTRAINT [FK_PCPROCIR_PCCIRUGIAS] FOREIGN KEY([IDCIRUGIA])
  38. REFERENCES [dbo].[PCCIRUGIAS] ([IDCIRUGIA])
  39. GO
  40. ALTER TABLE [dbo].[PCPROCIR]  WITH CHECK ADD  CONSTRAINT [FK_PCPROCIR_PCSALAS] FOREIGN KEY([SALCODIGO])
  41. REFERENCES [dbo].[PCSALAS] ([SALCODIGO])

Tengo un calendario del dia dinamico que me muestra cada hora, necesito consultar las cirugias de cada hora de acuerdo al campo FECINIPROC

Hago mi consulta asi:

Código SQL:
Ver original
  1. SELECT * FROM PCPROCIR WHERE FECINIPROC LIKE '24/10/2011 08%'

es decir, quiero mostrar las cirugias del dia 24/10/2011 que empiecen a las 08 de la mañana, pero la consulta no me arroja resultados, he visto que existen funciones como YEAR y MONTH, pero para las horas existe alguna función?..

Como puedo hacer mi consulta para que muestre justo las cirugias que empiezan a una determinada hora?
Agradezco me puedan colaborar, gracias
  #2 (permalink)  
Antiguo 24/10/2011, 10:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: existe funcion hora para sql server en una consulta?

Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. fecha datetime
  3. )
  4.  
  5. INSERT INTO #temp VALUES (getdate()-1)
  6. INSERT INTO #temp VALUES (getdate()-2)
  7.  
  8. SELECT * FROM #temp
  9.  
  10. SELECT * FROM #temp WHERE fecha >= dateadd(hh,12,CONVERT(datetime,'2011-10-22'))

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 24/10/2011, 10:28
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: existe funcion hora para sql server en una consulta?

He realizado tu ejemplo pero me sale el siguiente error:

La conversión del tipo de datos char a datetime produjo un valor datetime fuera de intervalo.
  #4 (permalink)  
Antiguo 24/10/2011, 10:34
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: existe funcion hora para sql server en una consulta?

ocarbit

Es muy extraño, yo he ejecutado el convert y sale perfectamente:

Código SQL:
Ver original
  1. SELECT dateadd(hh,12,CONVERT(datetime,'2011-10-22'))
  2.  
  3. ----------------------------------------------------------------
  4. 2011-10-22 12:00:00.000
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 24/10/2011, 10:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: existe funcion hora para sql server en una consulta?

Cita:
Iniciado por oscarbt Ver Mensaje
He realizado tu ejemplo pero me sale el siguiente error:

La conversión del tipo de datos char a datetime produjo un valor datetime fuera de intervalo.
En lugar de probar con la fecha que puse de ejemplo porque no pruebas con la que tu tienes '24/10/2011'???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 24/10/2011, 10:46
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: existe funcion hora para sql server en una consulta?

ok ya lo probe y bien, a ver si entendi la funcion:

dateadd(hh,12,convert(datetime,'2011-10-22'))

hh es horas
12 es la hora en la cual deseo encontrar coincidencia y
'2011-10-22', es la fecha en la cual voy a buscar???

Lo pregunto porque probe con: WHERE FECINIPROC = dateadd(hh,12,convert(datetime,'24/10/2011'))

Y en la tabla tengo registros donde la hora es 12 pero la consulta no me arroja resultados
  #7 (permalink)  
Antiguo 24/10/2011, 10:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: existe funcion hora para sql server en una consulta?

Asi es, dices que tienes una fecha y deseas buscar con las coincidencias de horas ademas de la fecha, pues simplemente le agregas las horas a tu fecha y listo :)

WHERE FECINIPROC = dateadd(hh,12,convert(datetime,'24/10/2011'))

Con esto tendrias que tener una fecha exactamente como esta:

2011-10-22 12:00:00.000

Si tienes a las 12:01 entonces tendrias que usar un >= o un between depende de como vayas a manejar tus rangos de fechas


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 24/10/2011, 10:54
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: existe funcion hora para sql server en una consulta?

Buenoo ya no tengo problema.....es por la zona horaria pero ya lo solucione, el motor interpreta que las las 12 de la noche son 00, y era por eso....

Una ultima pregunta, existe alguna función para saber el rango de horas entre dos horas

Es decir si yo tengo una hora inicio: 15:00 y una hora final: 18:00

Alguna función me puede mostrar que entre 15 y 18 estan 16:00 y 17:00 ?
  #9 (permalink)  
Antiguo 24/10/2011, 11:14
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: existe funcion hora para sql server en una consulta?

Código SQL:
Ver original
  1. WHERE fecha >= '2011-01-01 15:00:00' AND fecha <= '2011-01-01 18:00:00'
__________________
MCTS Isaias Islas
  #10 (permalink)  
Antiguo 24/10/2011, 15:48
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: existe funcion hora para sql server en una consulta?

Realmente de esa forma no me sirve, porque asi estoy trayendo como tal las fechas, yo lo que necesito es el rango entre dos horas
Por ejemplo si la fecha de Inicio son las 14:00:00 y la fecha final son las 18:00:00

en la consulta deberia mostrar : 15:00:00, 16:00:00, 17:00:00
que seria el rango entre el inicio y el fin, solo quiero asegurarme antes de empezar a programar si algo asi se puede hacer en SQL, para no darle vuelta a tanta validación en el código....
Gracias...
  #11 (permalink)  
Antiguo 24/10/2011, 16:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: existe funcion hora para sql server en una consulta?

WHERE FECINIPROC between dateadd(hh,@hora_inicial,convert(datetime,@fecha)) and dateadd(hh,@hora_final,convert(datetime,@fecha))

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 24/10/2011, 16:11
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: existe funcion hora para sql server en una consulta?

Magnifico......ahora si....muchas gracias....
  #13 (permalink)  
Antiguo 24/10/2011, 21:25
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: existe funcion hora para sql server en una consulta?

Si, creo que comprendi mal el planteamiento.
__________________
MCTS Isaias Islas

Etiquetas: funcion, select, server, sql, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:44.