GARANTIR DESCONTO

Fórum Campo Data definido com Varchar #175137

15/08/2003

0

Olá grupo,
Primeiramente gostaria de parabenizá-los pelo excelente conteúdo.
Há muito tempo utilizo este grupo(como expectador não-registrado), e nele solucionei praticamente todas as dúvidas que tive em relação às ferramentas que uso.

Bom, meu problema é o seguinte:
Tenho uma tabela (vendas) que possui dentre os campos existentes, um campo Data_Venda definido como Varchar (10).
As datas neste campo já estão gravadas no formato DD/MM/YYYY.
Quando tento fazer uma pesquisa SQL, passo como parâmetro uma string neste formato. Porém, o resultado não é o esperado.
Se tento usar a função CAST, ela me retorna erro na conversão.
Exemplo:
Select * from vendas where data_venda between ´01/01/2001´ and ´01/01/2005´.
A consulta acima me retorna Vazio, a não ser que alguma data_venda seja dia 01 de qualquer mês em qualquer ano.
Pergunta:
- Há alguma forma direta de converter o que já está gravado no banco para o formato (mm/dd/yyyy) sem perder dados.?
- Ou há alguma comando ou configuração no Interbase que deixe eu colocar o formato desejado? Assim supostamente o cast funcionaria!

Desde já agradeço e me despeço.
Um forte abraço para todos,


Brunowolly

Brunowolly

Responder

Post mais votado

15/08/2003

Colega,

Você já tentou assim?:
Select * from vendas where Cast(data_venda as Date) Between ´01/01/2001´ and ´01/01/2005´


Voce poderia selecionar uma faixa de datas usando >= inicio and <= fim, mas no formato que foi armazenado haverá falhas na seleção, deveria estar yyyymmdd para funcionar corretamente.

A saida mais adequada na minha opinião é realmente criar uma nova coluna com tipo DATA e atualizar o banco. No entanto, é preciso avaliar o impacto disto em sua aplicação, pois poderá gerar muito retrabalho.

Para atualizar a base com SQL seria assim:

UPDATE VENDAS SET VEN_DATA = Cast(data_venda as Date)


Mas ainda acho que deveria tentar experimentar o select com cast apresentado inicialmente.


Aroldo Zanela

Aroldo Zanela
Responder

Gostei + 1

Mais Posts

15/08/2003

Diogoalles

bom dia

Sugiro pra voce que converta este campo varchar para data .. porque dessa maneira você perde, e não tem, nenhuma funcionalidade com ele. Como por exemplo psquisar por intervalo de Data.
Crie um novo campo nesta tabela e através de um programinha que vc pode fazer me Delphi mesmo converta esta data em varchar para o novo campo do tipo Data.

você pode inserir um componente table em um form e um button,no evento onclick do button coloque:

Table.Open;
Table.First;
While not (Table.Eof)do
Begin
Table.Edit;
Table.fieldbyname(´Data_Nova´).AsDate := StrToDate(Table.fieldbyname(´Data_Nova´).AsString);
Table.Post;
Table.Next;
end;


se entendi sua questão espero ter ajudado.

abraço
Diogo


Responder

Gostei + 0

15/08/2003

Brunowolly

[quote:63f38837db=´Aroldo Zanela´]Colega,

Você já tentou assim?:
Select * from vendas where Cast(data_venda as Date) Between ´01/01/2001´ and ´01/01/2005´


Voce poderia selecionar uma faixa de datas usando >= inicio and <= fim, mas no formato que foi armazenado haverá falhas na seleção, deveria estar yyyymmdd para funcionar corretamente.

A saida mais adequada na minha opinião é realmente criar uma nova coluna com tipo DATA e atualizar o banco. No entanto, é preciso avaliar o impacto disto em sua aplicação, pois poderá gerar muito retrabalho.

Para atualizar a base com SQL seria assim:

UPDATE VENDAS SET VEN_DATA = Cast(data_venda as Date)


Mas ainda acho que deveria tentar experimentar o select com cast apresentado inicialmente.[/quote:63f38837db]

----------------------
Mais uma vez só tenho a agradecer!
Farei a conversão de Varchar p/ Date, parece + trabalhoso, porém, pelo que pude notar, é a forma + correta e limpa de consertar o erro.

Muito Obrigado Aroldo Zanela!


Responder

Gostei + 0

15/08/2003

Brunowolly

bom dia Sugiro pra voce que converta este campo varchar para data .. porque dessa maneira você perde, e não tem, nenhuma funcionalidade com ele. Como por exemplo psquisar por intervalo de Data. Crie um novo campo nesta tabela e através de um programinha que vc pode fazer me Delphi mesmo converta esta data em varchar para o novo campo do tipo Data. você pode inserir um componente table em um form e um button,no evento onclick do button coloque: Table.Open; Table.First; While not (Table.Eof)do Begin Table.Edit; Table.fieldbyname(´Data_Nova´).AsDate := StrToDate(Table.fieldbyname(´Data_Nova´).AsString); Table.Post; Table.Next; end; se entendi sua questão espero ter ajudado. abraço Diogo


Valeu Diogo,
Criarei um novo campo e farei a conversão de Varchar p/ Date.
Obrigado pela atenção!

Abraços!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar