DATAS NO FIREBIRD 2.0.1
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??
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??
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
Flw e bom fim de semana
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[ô]
Qualquer tipo manuseio ao banco deverá utilizar ASPAS SIMPLES ao invés de #.
select * from TABELA where DATA <= [ô]2009-09-27[ô]
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.
é 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.
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[Ô])
Select * From Produtos Where DatadeCadastro>=Format(TxtData, [Ô]mm,dd,yyyy[Ô])
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!!
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!!
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!
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