URGENTE! Select com Hora

Firebird

03/09/2003

Oi Pessoal,

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

Brumdrums

Curtidas 0

Respostas

Afarias

Afarias

03/09/2003

Campos para guardar somente HORA são do tipo TIME e não TIMESTAMP.

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
Brumdrums

Brumdrums

03/09/2003

Eu sei, mas estou usando isso no Delphi, e quando vou puxar os campos ele diz que não suporta o Dialect 1, aí tenho que botar TIMESTAMP.

Outros amigos também só usam campo HORA com TIMESTAMP devido a isso.

Valeu.


GOSTEI 0
Afarias

Afarias

03/09/2003

Se vc reparar... entre os exemplos q coloquei 2 são para quem usa campos TIMESTAMP

Vc provavelmente está usando BDE para acessar o INTERBASE -- o q eu não aconselho.


T+


GOSTEI 0
Brumdrums

Brumdrums

03/09/2003

Fala,
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
Afarias

Afarias

03/09/2003

ahh!! agora...

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
Brumdrums

Brumdrums

03/09/2003

Cara,

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
POSTAR