Problemas com anos de 4 dígitos no MySQL

21/03/2003

0

Estou tendo problemas com campos do tipo DATE no MySQL

Utilizo a biblioteca Zeos para conectar ao MySQL e quando insiro com o TZMySQLQuery
dados do tipo Data (com 4 dígitos no ano) em uma tabela ele grava de forma errada. Por exemplo:

04/03/2003 ele está gravando 04/03/2020, parece que ele está pegando o parâmetro que
eu passo só até o 8º caracter e então entende que eu entrei com 04/03/20, quando
converte passa o ano para 4 dígitos e fica 04/03/2020. Como corrigir esta salada,
ou seja como fazer ele entender e gravar o ano de 4 dígitos como eu indiquei no parâmetro?

E também gostaria de saber o que há de errado com este comando SQL:

update estoque_lotes set qtd=qtd-1 where (produto=1) and (dt_validade=´04/03/2003´)

Ele não está modificando nenhum registro(há um registro com as informações da
cláusula where batendo) e não está apresentando qualquer mensagem de erro.
Mais uma vez o problema parece ter ligação com a data porque quando eu mudo o comando
para que compare somente o campo produto ele realiza a baixa no estoque.


Desde já agradeço.

Vicente Corrêa da Silva Neto.


Anonymous

Anonymous

Responder

Posts

21/03/2003

Jonhy Riper

Ai Vicente, está função eu utilizo nos meus programas, apezar de utilizar Oracle, o controle eu faço no programa, verifique se possui alguma utilidade pra você, caso contrario ATÉ MAIS;


*********Colocar no Form Inicial
procedure TF_Principal.FormCreate(Sender: TObject);
begin
AcertaPadraoData;
end;

*************************************
Coloque a funcao em uma Unit sem form

procedure AcertaPadraoData;

const
arrShortDayNames: array[1..7] of string[3] = (´Dom´,´Seg´,´Ter´,´Qua´, ´Qui´,´Sex´,´Sab´);
arrLongDayNames: array[1..7] of string[15] = (´Domingo´,´Segunda´,´Terça´, ´Quarta´,´Quinta´,´Sexta´, ´Sábado´);
arrShortMonthNames: array[1..12] of string[3] = (´Jan´,´Fev´,´Mar´,´Abr´, ´Mai´,´Jun´,´Jul´,´Ago´,´Set´,´Out´,´Nov´,´Dez´);
arrLongMonthNames: array[1..12] of string[15] = (´Janeiro´,´Fevereiro´, ´Março´,´Abril´,´Maio´, ´Junho´,´Julho´,´Agosto´, ´Setembro´,´Outubro´, ´Novembro´,´Dezembro´);

var
ii: integer;
begin

ShortDateFormat := ´dd/mm/yyyy´;

DateSeparator:=´/´;
DecimalSeparator := ´,´;
ThousandSeparator := ´.´;


for ii := 1 to 7 do
begin
ShortDayNames[ii] := arrShortDayNames[ii];
LongDayNames[ii] := arrLongDayNames[ii];
end;
for ii := 1 to 12 do
begin
ShortMonthNames[ii] := arrShortMonthNames[ii];
LongMonthNames[ii] := arrLongMonthNames[ii];
end;
end;


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar