DATAS NO FIREBIRD 2.0.1

SURI 04/10/2009 10:20:14
#324348
E aí malta?
Estou com problemas na resolução de datas no fire. é o sgnt: O campo datavend era Varchar(16) onde recebia dados tratados (now,[Ô]dd-mmm-yyyy). Para fazer a busca com intervalo uso select * from tb where datavend>=[ô][Ô]& txtdata(0).text & [Ô][ô] and datavend<=[ô][Ô]& txtdata(1).text [Ô][ô]. Desta forma ta giro, porém o único problema surge se o intervalo conter meses diferentes ou seja de ex setembro e outubro, ai dá bof e eof=true. Já tentei com a comando sql Between e o fire não reconhece a caracter [Ô]#[Ô] que é colocado no caso de datas. O x da questão é que já alterei o tipo de campo na bd para data e ai surge um problema maior. O fire formata as datas em 09.09.2009. Desse jeito é que a consulta não funciona mesmo!! Nem sendo intervalos no mesmo mês nem nada. Como resolvo essa questão, alguém tem uma idéia??
MARCELOKROL 04/10/2009 10:44:44
#324350
Resposta escolhida
Acho que a única solução pra isso, será converter o campo para DATE ou TIMESTAMP, do contrario o firebird entende ele como se fosse STRING.

Flw e bom fim de semana
EDERMIR 04/10/2009 22:08:17
#324392
Os campos DATA no Firebird são armazenados no formato yyyy-mm-dd.

Qualquer tipo manuseio ao banco deverá utilizar ASPAS SIMPLES ao invés de #.

select * from TABELA where DATA <= [ô]2009-09-27[ô]



RICART 04/10/2009 23:44:32
#324394
Suri,
é isso mesmo que o pessoal está lhe sugerindo.

Só gostaria de comentar que não devemos armazenar dados em campos que não estejam com os tipos de dados que precisamos. Ou seja, qdo vc utiliza um campo varchar para armazenar uma data ou data/hora, vc terá problemas quando tentar recuperar a informação utilizando no filtro da query.
Noto que alguns colegas fazem assim por não procurar conhecer um pouco mais de banco de dados na hora de desenvolver seus projetos.

No caso dos campos data e data/hora, o banco de dados pode fazer uma porção de coisas para os usuários se os campos estiverem adequadamente definidos com os tipos de dados. Por outro lado, se não form assim, haverá perda de informação e de desempenho.

TRTNCG 05/10/2009 00:25:22
#324395
Olha eu sempre converto as data s para Mês-Dia-ano nunca tive problema nenhum

Select * From Produtos Where DatadeCadastro>=Format(TxtData, [Ô]mm,dd,yyyy[Ô])
SURI 05/10/2009 07:05:42
#324404
RICART,

Olhe, vou acatar o seu conselho. A questão não é não querer estudar mais a base de dados porque acredito que toda família VBMANIA é estudiosa, excepto alguns sem carácter que postam aqui tarefas de escola tentando extorquir códigos fonte da humilde e coesa família VBMANIA. Contudo valeu a dica!! Obrigadão a todos!!
RICART 05/10/2009 08:18:53
#324409
Citação:

TRSOFTWARES escreveu:
Olha eu sempre converto as data s para Mês-Dia-ano nunca tive problema nenhum

Select * From Produtos Where DatadeCadastro>=Format(TxtData, [Ô]mm,dd,yyyy[Ô])



Só para esclarecer, TRSOFTWARES.
O problema é quando o seu campo da tabela (DatadeCadastro) não estiver no tipo datahora. Pelo que estou notando, o seu campo está ok e vc está passando um parâmetro formatado, de acordo com as 2 primeiras respostas. Correto!



EDERMIR 05/10/2009 12:53:11
#324451
Citação:

RICART escreveu:
Suri,
é isso mesmo que o pessoal está lhe sugerindo.

... qdo vc utiliza um campo varchar para armazenar uma data ou data/hora, vc terá problemas quando tentar recuperar a informação utilizando no filtro da query.


Um pequeno adendo RICART. SE, e somente SE, for IMPOSSÍVEL utilizar um campo DATA para armazenar uma data, grave a informação no formato yyyymmdd (com ou sem formatação). Em caso de HORAS, utilize hh:nn:ss ([Ô]nn[Ô] são minutos para não confundir com [Ô]mm[Ô] meses).
Tópico encerrado , respostas não são mais permitidas