-1

Colocar datas americanas em formato brasileiro

criado por Renata Albuquerque em 26/03/2002 2:22pm
Para simplificar tudo isso é que existe no MySQL a função DATE_FORMAT (pode ser usada como TIME_FORMAT)

Sintaxe:

DATE_FORMAT(data, formato) ou TIME_FORMAT(hora, formato)
Em formato podemos ter:
%a: dia da semana abreviado.
%b: mês abreviado.
%D: mês com sufixo ordinal.
%d: dia do mês
%H ou %I: formato 24 horas com dois dígitos.
%h ou %I: hora formato 12 horas com dois dígitos.
%i: minutos.
%j: dia do ano.
%k: formato 24 horas com um dígito.
%l: formato 12 horas com um dígito.
%M: nome do mês.
%m: número do mês.
%p: AM ou PM.
%r: hora incluindo AM ou PM.
%S: segundos com dois dígitos.
%s: segundos com um dígito.
%T: hora.
%U: semana do ano.
%W: nome do dia da semana.
%w: dia da semana, onde domingo é 0.
%Y: ano de quatro dígitos.
%y: ano de dois dígitos.
%%: caractere de porcentagem (%)

Vamos supor que eu tenha uma tabela chamada cadastro com os campos codigo, nome, email, datacad. Partindo daí, vamos supor que eu necessite de uma lista ordenada por data com os nomes com linkados para o e-mail e antes dos nomes tem de ter as datas em formato brasileiro com horário. Veja:

<?php
// Seleciono os dados da tabela. Veja o ponto chave: apelido para o resultado da função
$sql = "SELECT nome, email, DATE_FORMAT(data, '%d/%m/%Y - %H:%i') as datanova from cadastro order by data";
$resultado = mysql_query($sql, $conexao)or die("Não foi possível selecionar usuários.");
while ($row=mysql_fetch_array($resultado) {
// Note que o campo colocado não é o campo data ou algo parecido com echo(DATE_FORMAT(data, '%d/%m/%Y - %H:%i') ). Eu coloco o apelido datanova.
?>
&lt;p><?php echo $row["datanova"]; ?>&lt;a href="mailto:<?php echo$row["email"]; ?>"><?php echo$row[nome]; ?>&lt;/a>&lt;/p>
<?php
}
?>

Pronto! Está aí a data em formato brasileiro: com hora ou sem hora, AM, PM, com dias da semana.... Agora só depende de você!


"Deus é o nosso refúgio e fortaleza, socorro bem presente na angústia."
(Salmos 46:1)

Comentários:

Mostrando 1 - 10 de 10 comentários
Gostaria de saber se posso usar DATE_FORMAT no comando sql INSERT. A intenção é que o usuário digite em um formulário as datas no formato dd/mm/aaaa e, via php, a inserção no mysql se converta automaticamente para o formato aaaa-dd-mm. Alguém pode me ajudar?
08/03/2010 4:04pm (~6 anos atrás)

edyd junges disse:
gurizada
achei um jeito barbada de colocar o nome dos meses, dias em PT-BR

mysql_query("SET lc_time_names = 'pt_BR'");

bah muito fácil, não precisa usar nehuma função do php, é só colocar antes do select
30/05/2008 6:43am (~8 anos atrás)

Ricardo disse:
se vc fizer a query por php pode fazer assim

SELECT
nome,
email,
DATE_FORMAT(data, '%d/%m/%Y - %H:%i') as datanova
FROM
cadastro
WHERE
datanova > <?php mktime(0,0,0,date("m"),date("d")-30,date("Y"))?>
ORDER BY data


mas tudo em MYSQL eu nao to lembrando agora qual a funcao
17/07/2006 12:34pm (~10 anos atrás)

alex rocha disse:
Colocando a data no formato para insercao no banco interbase/firebird/mysql:



Resolvido:


Com ajuda dos amigos:

Primeiro eu pego a data do form chamo a funcao converteData que transformará para data do banco interbase assim como: 2004-Nov-28

agora quando o usario entra com a data no form 28/11/2004 a funcao transforma na data para o banco interbase ou firebird e mysql, armazenando realmente a data digitada no form 28/11/2004.
antes ele invertia na hora de inserir no banco ficando 11/28/2004 só que nem chegava de armazenar dava um erro.

sigua os passos abaixo:

<?

$thisDATANASCIMENTO = converteData($thisDATANASCIMENTO);


function converteData($data){
if ($data == "")
return "";

if (substr($data,3,2) == "01"){
$mes = "Jan";
};
if (substr($data,3,2) == "02"){
$mes = "Feb";
};
if (substr($data,3,2) == "03"){
$mes = "Mar";
};
if (substr($data,3,2) == "04"){
$mes = "Apr";
};
if (substr($data,3,2) == "05"){
$mes = "May";
};
if (substr($data,3,2) == "06"){
$mes = "Jun";
};
if (substr($data,3,2) == "07"){
$mes = "Jul";
};
if (substr($data,3,2) == "08"){
$mes = "Aug";
};
if (substr($data,3,2) == "09"){
$mes = "Sep";
};
if (substr($data,3,2) == "10"){
$mes = "Oct";
};
if (substr($data,3,2) == "11"){
$mes = "Nov";
};
if (substr($data,3,2) == "12"){
$mes = "Dec";
};

$diavenc = substr($data,0,2);
$mesvenc = $mes;
$anovenc = substr($data,6,4);


$dataConvertida = $anovenc."-".$mesvenc."-".$diavenc;
return $dataConvertida;


}


?>
07/12/2004 8:58am (~12 anos atrás)

Boa Tarde?

Gostaria de uma ajuda para inclusão de dados no banco pelo formulário PHP, como faço pra ficar no formato brasileiro para q o Usuário poça facilitar a inclusão no banco. Eu sei q existem uma forma que eu separe o dia, mes e ano em cada campo e quando mando para o banco as informações ele concatena tudo colocando na ordem q o banco exige.

Alguem poderia ajudar?

Obrigado
22/09/2004 3:25pm (~12 anos atrás)

Não precisa usar date_format na consulta.
Pegue o resultado da consulta:
<?
$americana_brasil = $resultado->data;
$americana_brasil = date("d/m/Y", strtotime($americana_brasil);
?>
Pronto
20/05/2004 1:34pm (~12 anos atrás)

tenho um problema com datas...
criei um formulario com um campo "data do registro". quando insiro um registro novo usando current_date para esse campo, pelo propio mysql, consigo o resultado desejado. aparece a data de quando inseri o registro.
mas quando preencho pelo formulario no site php, usando o mesmo current_date, aparece sempre 0000-00-00... aqui vai o codigo:

$query = "insert into pessoas values
('null','".$qtNome."','".$qtFone.'",'curdate()')";

$result = mysql_query($query);

é engraçado porque quando dou o mesmo comando pelo mysql funciona e pelo site não...

alguem pode me ajudar?

obrigado!
15/03/2004 9:21am (~12 anos atrás)

Ola,
Eu uso PostgreSQL, então, tive que criar um função simples, mas eficiente, pq não achei nada para transformar a data "yyyy-mm-dd hh:mm:ss" em data Britânica (ou brasileira):

function data_normal($data, $compacto = true){
if ($data == '')
return "";

if ($compacto)
return substr($data,8,2)."/".substr($data,5,2)."/".substr($data,0,4);
else
return substr($data,8,2)."/".substr($data,5,2)."/".substr($data,0,4)." ".substr($data,11,8);
}

data_nomal(data_americana, true) -> Data Sem Horário
data_nomal(data_americana, false) -> Data Sem Horário

Mas agora preciso diminuir o fuso, porque estou cadastrando a data/Hora GPS (UTC 00:00).
Alguem tem alguma dica?

Agradeço muito!
12/10/2003 11:28am (~13 anos atrás)

Vamos ver se eu entendi bem a sua pergunta. No MySQL você *PODE* sim fazer algo do tipo:

SELECT *, (DATA, '%d/%m/%Y - %H:%i') AS A_DATA
FROM A_TABELA
ORDER BY A_DATA

Funciona numa boa.

Qualquer coisa estamos aí.

Atenciosamente,
Davi Mitsuo Shibayama.
dmitsuo@yahoo.com
http://www.amapa.gov.br
23/05/2002 11:52pm (~14 anos atrás)

Richard Lima disse:
fiquei sem resposta :(
30/04/2002 3:20pm (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)