Ir para conteúdo
Fórum Script Brasil
  • 0

Corrigir data no Mysql


VDLR

Pergunta

Pessoal beleza.

O caso é o seguinte:

Herdei um sistema em Delphi com Banco Mysql 4, porém devido a problemas no micro tive que formatar a máquina e ao invés de instalar o mysql 4 eu instalei a versão 5, aparentemente estava funcionando normal até o dia que me falaram que não estava funcionando a pesquisa por data, quando fui olhar o banco tudo que foi dado de entrada, as data ficam desta forma:

0008-01-17

O comando que estava sendo usado para inserir os dados era este,

m_SQL3:='VALUES(DATE_FORMAT("'+data_os+'","%e,%c,%y"),DATE_FORMAT("'+data_entrega+'","%e,%c,%y"),

Alterei o formato e ficou assim "%d,%m,%y" e passou a gravar como 2008.

O problema agora é o seguinte, tem como eu alterar todas as datas erradas

0008-01-17 para 2008-01-17

Já quebrei a cabeça e não achei como.

Se alguém tiver alguma idéia deste já agradeço.

Abraço

VDL :blink:

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
VLDR, não seria o caso de executar um UPDATE na tabela, setando o campo com a sua nova formatação?

Micheus, tudo bem.

Este UPDATE seria feito lançamento por lançamento já existente, ou tem como fazer um geral, o pessoal já fez mais de 2000 lançamento.

Abraço

Valdecir :unsure:

Link para o comentário
Compartilhar em outros sites

  • 0
VLDR, não seria o caso de executar um UPDATE na tabela, setando o campo com a sua nova formatação?

Micheus, tudo bem.

Este UPDATE seria feito lançamento por lançamento já existente, ou tem como fazer um geral, o pessoal já fez mais de 2000 lançamento.

VDLR, com esta dúvida envolve apenas apenas recurso do banco de dados, estou movendo para a sessão MySQL.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
O problema agora é o seguinte, tem como eu alterar todas as datas erradas

008-01-17 para 2008-01-17

Já quebrei a cabeça e não achei como.

Se alguém tiver alguma idéia deste já agradeço.

Abraço

VDL :blink:

Oi, Valdecir!

experimente este artifício:

UPDATE tabela
SET campo = STR_TO_DATE(CONCAT("2008", SUBSTRING(DATE_FORMAT(campo, "%y-%m-%d"), 5, 6)), "%y-%m-%d");

Link para o comentário
Compartilhar em outros sites

  • 0
Oi, Valdecir!

experimente este artifício:

SQL

UPDATE tabela

SET campo = STR_TO_DATE(CONCAT("2008", SUBSTRING(DATE_FORMAT(campo, "%y-%m-%d"), 5, 6)), "%y-%m-%d");

Denis, tudo bem.

Dei este comando

UPDATE phoenix.oserv

SET data = STR_TO_DATE(CONCAT("2008", SUBSTRING(DATE_FORMAT(data, "%y-%m-%d"), 5, 6)), "%y-%m-%d");

e recebi este erro

Incorrect datetime value: '20086-03' for function str_to_time erro 1411

Esta correto o comando ?

Este comando irá alterar só os lançamentos que estão com 0008, pois tenho mais lançamentos na tabela.

Abraço

Valdecir

Link para o comentário
Compartilhar em outros sites

  • 0
Oi, Valdecir!

experimente este artifício:

SQL

UPDATE tabela

SET campo = STR_TO_DATE(CONCAT("2008", SUBSTRING(DATE_FORMAT(campo, "%y-%m-%d"), 5, 6)), "%y-%m-%d");

Denis, tudo bem.

Dei este comando

UPDATE phoenix.oserv

SET data = STR_TO_DATE(CONCAT("2008", SUBSTRING(DATE_FORMAT(data, "%y-%m-%d"), 5, 6)), "%y-%m-%d");

e recebi este erro

Incorrect datetime value: '20086-03' for function str_to_time erro 1411

Esta correto o comando ?

Este comando irá alterar só os lançamentos que estão com 0008, pois tenho mais lançamentos na tabela.

Abraço

Valdecir

Ajuste os valores (5 e 6) na substring para obter a posição correta. A query não está buscando o ano com 4 posições.

O substring deverá buscar a posição -mm-dd que equivale ao mes e dia. Exemplo se data = '0008-06-01' (1 Junho ano 8) então o substring tem que retornar a string "-06-01".

Ver instruções sobre a função substring no manual do MySQL neste link

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...