Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

tiko165

[Resolvido] MySQL com datas e times

Mensagens Recomendadas

tiko165

Quando começei a criar o meu website, na Base de dados, a data coloquei em tipo Varchar, gravando as datas em "DD/MM/AAAA" e queria alterar para Date, para o formato "AAAA/MM/DD".

Se so alterar para Date, a tabela da data fica automaticamente em vazio, pais o formato da data esta diferente, como tal gostava de saber se existe alguma função que faça isso no SQL.


collectioneuro300px.png

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

Hum..para já não deverias ter guardado os registos da data em varchar, agora não terias esse problema..outra coisa tens muitos registos?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

se os campos estão realmente todos bem formatados como dizes, podes fazer o seguinte para uma tabela com o nome "tabela" e o campo a ser alterado com o nome "data"

update tabela where data = concat(substr(data, 7, 4), '/', substr(data, 4, 2), '/', substr(data, 1, 2));


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiko165

Correcção, na BD consta assim: "DD-MM-AAAA".

Há-de ser algo assim :

UPDATE `tabela` SET `data` = STR_TO_DATE(`data`, "%Y/%m/%d");

Depois disto feito mudas o tipo do campo na tabela.

Testei como informas-te, mas as datas ficam todas alteradas, tenho datas de 2001 como de 2020 :s

Tentei com os "-" como informei que consta na minha BD.

se os campos estão realmente todos bem formatados como dizes, podes fazer o seguinte para uma tabela com o nome "tabela" e o campo a ser alterado com o nome "data"

update tabela where data = concat(substr(data, 7, 4), '/', substr(data, 4, 2), '/', substr(data, 1, 2));

Com esse update, não consegui grande resultado :s


collectioneuro300px.png

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiko165

UPDATE `tabela` SET `data` = DATE_FORMAT(STR_TO_DATE(`data`, "%d-%m-%Y"), "Y/%m/%d);

Exactamente, deu exactamente como se pretendia :)

Só uma pequena correcção no código que forneces-te :P Faltando umas aspas e "%" para o Y

UPDATE `ce_news` SET `news_date` = DATE_FORMAT(STR_TO_DATE(`news_date`, "%d-%m-%Y"), "%Y-%m-%d");


collectioneuro300px.png

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Exactamente, deu exactamente como se pretendia :)

Só uma pequena correcção no código que forneces-te :P Faltando umas aspas e "%" para o Y

UPDATE `ce_news` SET `news_date` = DATE_FORMAT(STR_TO_DATE(`news_date`, "%d-%m-%Y"), "%Y-%m-%d");

pois .. um gajo escreve à pressa e depois sai mal :D


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiko165

pois .. um gajo escreve à pressa e depois sai mal :D

Se foi a pressa ou não, o erro também foi menor, nada de grave :)

Mas já agora, Obrigado :)

Editado por tiko165

collectioneuro300px.png

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.