Fórum URGENTE! Select com Hora #38493
03/09/2003
0
Gostaria de saber como faço um select passando por
parâmetro uma hora qualquer num campo só de hora que é
TIMESTAMP, pelo Delphi 7 usando Interbase 6.
Por exemplo,
Tabela PONTO
Campos TIPO
-------------------------
CODIGO INTEGER
NOME VARCHAR(50)
DATA TIMESTAMP
HORA CHEGADA TIMESTAMP
HORA SAIDA TIMESTAMP
Aí eu quero as pessoas que no dia 10/08/03 chegaram
depois das 09:00 e saíram antes das 18:00.
Já tentei de várias formas mas ele dá erro quando
começa a ler a hora que estou pedindo.
Abraço,
Brumdrums
Curtir tópico
+ 0Posts
03/09/2003
Afarias
Segue alguns exemplos::
select * from minha_tabela
where campo_time between ´09:00:00´ and ´18:00:00´;
select * from minha_tabela
where campo_timestamp between ´09/03/03 09:00:00´ and ´09/03/03 18:00:00´;
select * from minha_tabela
where cast(campo_timestamp as time) between ´09:00:00´ and ´18:00:00´;
T+
Gostei + 0
03/09/2003
Brumdrums
Outros amigos também só usam campo HORA com TIMESTAMP devido a isso.
Valeu.
Gostei + 0
03/09/2003
Afarias
Vc provavelmente está usando BDE para acessar o INTERBASE -- o q eu não aconselho.
T+
Gostei + 0
03/09/2003
Brumdrums
Eu uso o dbExpress para conectar ao banco.
Fiz mais uns testes aqui e o erro para estar numa soma que faço no select, vou lhe mostrar o código e talvez vc me ajude.
Select * From AGENDA
Where ContaUsr = ´SUPERVISOR´
AND Dia = ´09/04/2003´
AND CAST(Hora As Time) < ´10:30:00´
AND (CAST(Hora As Time) + CAST(Duracao As Time)) > ´10:01:00´
Aquele exemplo que havia dado anteriormente era hipotético pq com esse aqui algumas pessoas não entendiam.
Se eu tirar a última linha ele funciona, mas quando executo com a última ele diz ´expression evaluation not supported´.
Tem como eu manter essa soma dentro do select??
Valeu,
Gostei + 0
03/09/2003
Afarias
neste caso (somar campos hora), receio q vc tera q usar uma UDF. Nao sei se a UDF padrao do IB tem alguma funcao para este caso (como AddTime) e nao posso ver agora -- vc pode ver no arquivo ib_udf.sql em \examples\udf.
se nao tiver, escolha uma dessas UDFs aqui::
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_udf_libs
ou construa a sua.
E, so como comentario, o DBX pelo q sei suporta o Dialeto 3 do Interbase.
T+
Gostei + 0
03/09/2003
Brumdrums
Valeuzão pela ajuda mas sou novato em IB e nunca ouvi falar de UDF, entrei no IBPhoenix mas não sei nem por onde começar a procurar.
Vou usar uma query auxiliar pra me retornar os dois campos que quero somar, aí eu somo por fora e se for ok continuo a execução da query.
Abraço,
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)