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
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 23:41:36.


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