Fórum Access e Conversão de datas - importante #225079
10/04/2004
0
Caros amigos...
To enfrentando um problema que encontrei hoje e não sei como resolver, to desenvolvendo um programa em delphi usando Access, até ai tudo bem, o problema começa quando trabalho com os campos de datas..
tipo...
eu tenho num registro uma data 10/04/2004 (10 de abril de 2004), só que quando tenho q fazer uma comparacao no sql tem q ser #04/10/2004 (formato americano) pq a forma brasileira nao funciona.. ok.. seria facil resolver e começar a trabalhar com o formato americano se nao fosse por um detalhe... se vc for diretamente no Access digitar a data num campo, ele nao aceita 04/30/2004 e converte automaticamente para o formato brasileiro..
conclusão: datas abaixo do dia 12 funcionam no formato americando, acima disso funciona no formato brasileiro... ex: 13/04/2004 é 13 de Abril de 2004 mas 12/04/2004 é 4 de Dezembro de 2004... alguém mais entendido de access pode me dá uma ajuda?? já tentei por um formato personalizado dd/mm/yyyy mas nao resolveu nada e também não é problema de configuração de data no painel de controle.. tipo.. já tô trabalhando no programa tem um tempo e não queria mudar de bd agora q quase chegou ao fim... pior eh que só percebi o problema agora.. :/
minha consulta:
SELECT Clientes.Nome, Cheques.agencia, Cheques.conta, Cheques.valor FROM Clientes INNER JOIN Cheques ON Clientes.cli_seq = Cheques.cliente WHERE Cheques.dt_receb = #09/04/2004 ORDER BY Cheques.dt_receb DESC;
pro access esse 09/04 eh 4 de setembro.. mas se eu inserir no formato americano 04/09 na hora da ordenacao isso é 9 de ABRIL...
tirando o WHERE aparece um detalhe na ordenação decrescente (DESC).. se for pra funcionar no formato americando 07/05 (05 de julho) seria maior q 05/07 (7 de maio) mas isso nao acontece....fica ordenado em brasileiro.. nao sei mais o q fazer...
se alguém tiver uma luz pra esse problema q me tá me trazendo dor de cabeça eu agradeceria...
um abraço..
Richard
To enfrentando um problema que encontrei hoje e não sei como resolver, to desenvolvendo um programa em delphi usando Access, até ai tudo bem, o problema começa quando trabalho com os campos de datas..
tipo...
eu tenho num registro uma data 10/04/2004 (10 de abril de 2004), só que quando tenho q fazer uma comparacao no sql tem q ser #04/10/2004 (formato americano) pq a forma brasileira nao funciona.. ok.. seria facil resolver e começar a trabalhar com o formato americano se nao fosse por um detalhe... se vc for diretamente no Access digitar a data num campo, ele nao aceita 04/30/2004 e converte automaticamente para o formato brasileiro..
conclusão: datas abaixo do dia 12 funcionam no formato americando, acima disso funciona no formato brasileiro... ex: 13/04/2004 é 13 de Abril de 2004 mas 12/04/2004 é 4 de Dezembro de 2004... alguém mais entendido de access pode me dá uma ajuda?? já tentei por um formato personalizado dd/mm/yyyy mas nao resolveu nada e também não é problema de configuração de data no painel de controle.. tipo.. já tô trabalhando no programa tem um tempo e não queria mudar de bd agora q quase chegou ao fim... pior eh que só percebi o problema agora.. :/
minha consulta:
SELECT Clientes.Nome, Cheques.agencia, Cheques.conta, Cheques.valor FROM Clientes INNER JOIN Cheques ON Clientes.cli_seq = Cheques.cliente WHERE Cheques.dt_receb = #09/04/2004 ORDER BY Cheques.dt_receb DESC;
pro access esse 09/04 eh 4 de setembro.. mas se eu inserir no formato americano 04/09 na hora da ordenacao isso é 9 de ABRIL...
tirando o WHERE aparece um detalhe na ordenação decrescente (DESC).. se for pra funcionar no formato americando 07/05 (05 de julho) seria maior q 05/07 (7 de maio) mas isso nao acontece....fica ordenado em brasileiro.. nao sei mais o q fazer...
se alguém tiver uma luz pra esse problema q me tá me trazendo dor de cabeça eu agradeceria...
um abraço..
Richard
Richard Lima
Curtir tópico
+ 0
Responder
Posts
10/04/2004
Aroldo Zanela
Colega,
Na verdade as datas são armazenas como números reais, onde a parte inteira representa a data e a parte fracionária representa a hora. A formatação pode ser efetuada de acordo com diversos padrões existentes, sem que isto possa afetar sua consulta. No entanto, para recuperação no banco de dados é necessário passar a data no formato americano (mm/dd/yy), conforme exemplo com DBDEMOS:
Uma forma para não se preocupar com formato de datas é utilizar parâmetros ao invés de montar sua consulta dinamicamente.
Coloque a seguinte consulta na propriedade SQL da query em questão:
Utilize o seguinte código:
No exemplo acima, utilizei um componente DateTimePicker para selecionar a data.
Na verdade as datas são armazenas como números reais, onde a parte inteira representa a data e a parte fracionária representa a hora. A formatação pode ser efetuada de acordo com diversos padrões existentes, sem que isto possa afetar sua consulta. No entanto, para recuperação no banco de dados é necessário passar a data no formato americano (mm/dd/yy), conforme exemplo com DBDEMOS:
With Query1 do begin Close; SQL.Text := ´SELECT * FROM Orders WHERE SaleDate = ´+QuotedStr(´06/24/88´); Open; end;
Uma forma para não se preocupar com formato de datas é utilizar parâmetros ao invés de montar sua consulta dinamicamente.
Coloque a seguinte consulta na propriedade SQL da query em questão:
SELECT * from Orders WHERE SaleDate = :Data
Utilize o seguinte código:
With Query1 do begin Close; Query1.ParamByName(´Data´).AsDate := DateTimePicker1.Date; Open; end;
No exemplo acima, utilizei um componente DateTimePicker para selecionar a data.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)