Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-05-2013
Avatar de Cristhor1982
Cristhor1982 Cristhor1982 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 60
Poder: 12
Cristhor1982 Va por buen camino
Validar Hora

Hola amigos, necesito una pequeña ayuda, les comento tengo una tabla que tiene el campo FECHA_HORA varchar(50),
que me entrega este valor:

23-may-2013 11:49:11 CLT

y desde Delphi le envio con un datetimepicker, la fecha y concateno con un tedit Queda algo asi 28/05/2013 08:50

ahora bien estoy tratando de hacer un filtro de las fechas, pero no se me ocurre como?, alguna sugerencia

Saludos
Responder Con Cita
  #2  
Antiguo 28-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Cristhor1982.

Nos das pocos datos como para ser muy específicos...

Dependiendo de el RDBMS que estes usando la sintáxis va a variar, pero podes hacer el filtrado desde una consulta.

Tomando en cuenta que para que el campo FECHA_HORA sea un valor de fecha válido nos "molestan" los últimos caracteres, en Firebird se podría hacer:
Código SQL [-]
SELECT *
FROM TU_TABLA
WHERE CAST(SUBSTRING(FECHA_HORA FROM 1 FOR CHAR_LENGTH(FECHA_HORA)-4) AS TIMESTAMP)
      BETWEEN :DESDE AND :HASTA

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 28-05-2013
Avatar de Cristhor1982
Cristhor1982 Cristhor1982 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 60
Poder: 12
Cristhor1982 Va por buen camino
Hola Ecfisa

Gracias por responder tan rapida, mi a continuacion te muestro mi consulta:

Código SQL [-]
  SELECT  a.N_Maquina,b.Maquina,a.Horometro,a.Cod_Operador,c.Trabajador,a.Cod_Cancha,d.cancha,a.Cod_Insumo,e.D  escripCorta,a.Cantidad , NroReferencia,
  CASE
    WHEN   Importado = '1' then 'Importado'
     WHEN  Importado = '0' then 'No Importado'
     ELSE ''
    END AS Estado,
  FechaHora=convert(datetime,(substring(a.fecha_hora,0,21)),103) 
  FROM    SCGT_TempGE a, Maquinas b,Trabajadores c, Canchas d, Exit_Articulos e
  WHERE  a.N_Maquina= b.N_Maquina
  and    a.cod_Operador = c.Cod_Trabajador
  and    a.Cod_Cancha = d.Cod_Cancha
  and    a.Cod_Insumo = e.CodigoArticulo
  and    ((@xfecha = '') OR (@xfecha <> '' And Fecha_Hora Between @Fecha_Hora+' '+'CLT' And @xFecha+' '+'CLT'))
  and    ((@xmaquina = '') OR (@xmaquina <> '' And a.N_Maquina = @xMaquina))
  and    ((@xcancha = '') OR (@xCancha <> '' And a.Cod_Cancha = @xCancha))


El que filtra abajo XFecha= Lleva 22/05/2013 09:49 lo estaba tratando de solucionar concatenando 'CLT', pero que pasara cuando cambie :S

ES SQL 2000 Y Delphi

Saludos

Cita:
Empezado por ecfisa Ver Mensaje
Hola Cristhor1982.

Nos das pocos datos como para ser muy específicos...

Dependiendo de el RDBMS que estes usando la sintáxis va a variar, pero podes hacer el filtrado desde una consulta.

Tomando en cuenta que para que el campo FECHA_HORA sea un valor de fecha válido nos "molestan" los últimos caracteres, en Firebird se podría hacer:
Código SQL [-]
SELECT *
FROM TU_TABLA
WHERE CAST(SUBSTRING(FECHA_HORA FROM 1 FOR CHAR_LENGTH(FECHA_HORA)-4) AS TIMESTAMP)
      BETWEEN :DESDE AND :HASTA

Saludos.
Responder Con Cita
  #4  
Antiguo 28-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Cristhor1982 Ver Mensaje
El que filtra abajo XFecha= Lleva 22/05/2013 09:49 lo estaba tratando de solucionar concatenando 'CLT', pero que pasara cuando cambie :S

ES SQL 2000 Y Delphi
Hola Cristhor1982.

Según veo ahora, sólo se evalúan los primeros 23 caracteres del campo ("23-may-2013 11:49:11 CLT"). Y si los últimos tres caracteres podrían variar, los podrías pasar mediante un parámetro, por ejemplo:
Código SQL [-]
SELECT *
FROM TU_TABLA
WHERE  CAST(SUBSTRING(FECHA_HORA,  0, 19) AS DATETIME) BETWEEN :DESDE AND :HASTA
    AND SUBSTRING(FECHA_HORA, 22, 3) = :PEXT
Pero sinceramente todavía no estoy seguro de haber entendido que es lo que buscas hacer...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 28-05-2013
Avatar de Cristhor1982
Cristhor1982 Cristhor1982 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 60
Poder: 12
Cristhor1982 Va por buen camino
De esto no se que puede estar mal, segun yo esta ok...brrr
declare @fecha_hora varchar(20) ,
@xfecha varchar(20)

@Fecha_Hora= '20/05/2013 00:00' --fecha inicio
@xFecha='20/05/2013 23:59' --fecha termino

y el campo FECHA_HORA es un varchar que me entrega = '20-may-2013 23:40:11 CLT' (varchar de 50)

Código SQL [-]
and    ((@Fecha_Hora = '') OR (@Fecha_Hora <> '' And convert(datetime,(substring(a.fecha_hora,0,18)),103) Between convert(datetime,(substring(@fecha_hora,0,18)),103) And convert(datetime,(substring(@xFecha,0,18)),103)))
Cita:
Empezado por ecfisa Ver Mensaje
Hola Cristhor1982.

Según veo ahora, sólo se evalúan los primeros 23 caracteres del campo ("23-may-2013 11:49:11 CLT"). Y si los últimos tres caracteres podrían variar, los podrías pasar mediante un parámetro, por ejemplo:
Código SQL [-]
SELECT *
FROM TU_TABLA
WHERE  CAST(SUBSTRING(FECHA_HORA,  0, 19) AS DATETIME) BETWEEN :DESDE AND :HASTA
    AND SUBSTRING(FECHA_HORA, 22, 3) = :PEXT
Pero sinceramente todavía no estoy seguro de haber entendido que es lo que buscas hacer...

Saludos.
Responder Con Cita
  #6  
Antiguo 28-05-2013
Avatar de Cristhor1982
Cristhor1982 Cristhor1982 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 60
Poder: 12
Cristhor1982 Va por buen camino
Esta ultima consulta estaba ok, solo que desde delphi no traia valores....brrrr en algun lado limpiaba la variable y trataba de convertir ' ', en datetime, lo bueno es que resulto

transformando el campo FECHA_HORA con datetime y recortando con substring

y luego las variables del proc alm lo mismo

Era solo eso....estuve toda la mañana buscando un pequeño error!!!!

Gracias Ecfisa,

Saludos
Responder Con Cita
  #7  
Antiguo 28-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Me alegra mucho que lo hayas solucionado

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Como le resto una hora a la fecha y hora en sql server uper MS SQL Server 3 12-10-2015 20:41:49
Validar dbedit para fecha y hora Vales08 Varios 4 24-05-2011 00:27:57
seleccionar hora en datetimepicker desde hora especifica gonza_619 Varios 4 21-11-2010 20:42:19
Validar Edit tipo hora XaSu Varios 4 31-12-2007 19:14:01
Validar Hora con server Internet Descendents Varios 0 10-02-2004 12:46:23


La franja horaria es GMT +2. Ahora son las 03:22:29.


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