16/08/2014

Datas em PHP com MySQL

Quando se resgata datas do banco de dados, para modificar para o nosso padrão xx/xx/xxxx isso é feito no banco ou no php.

PHP

Fabio Santos

Respostas

16/08/2014

William (devwilliam)

Existem 2 possibilidades, pode ser no PHP ou MySQL:

Seguem 2 funções que utilizo em meus projetos quando preciso formatar datas para exibição ou gravação no banco de dados
<?php
       /*
	* Função para formatar data no formato Americano
	* @param $data - Data no formato brasileiro dd/mm/yyyy
	* @return String - Data no formato americano yyyy-mm-dd
	*/
	function dataBrToEng($data){
		if (!empty($data)){
                   $data = explode("/", $data);
                   return $data[2].'-'.$data[1].'-'.$data[0];
                }
	}

	/*
	*Função para formatar data no formato brasileiro
	* @param $data - Data no formato americano yyyy-mm-dd
	* @return String - Data no formato brasileiro dd/mm/yyyy
	*/
	function dataEngToBr($data){
		if (!empty($data)){
                   $data = explode("-", $data);
                   return $data[2].'/'.$data[1].'/'.$data[0];
                }
	}
?>


Se for via instrução SQL para exibir, pode ser assim (dd/mm/yyyy):
SELECT DATE_FORMAT(data_banco,'%d/%m/%Y') FROM TABELA
Responder Citar

16/08/2014

Fabio Santos

Na sua opinião é melhor fazer isso na linguagem ou no banco?
Responder Citar

17/08/2014

Marcio Araujo

Posso tentar responder, eu vejo na maioria dos casos isso sendo feito pela linguagem mesmo mas não sei te dizer qual o melhor.
Responder Citar

17/08/2014

Marisiana

Se você estiver utilizando um select para retornar os dados do banco, pode trazer a data já formatada conforme o exemplo que o William passou.
Eu acho mais prático, sem contar que já reduz linhas de código na aplicação, pois se vc não formatar no select vai ter q formatar na aplicação para poder mostrar a data no formato correto.
Responder Citar

17/08/2014

Fabio Santos

Melhor no banco então?
Responder Citar

17/08/2014

Marisiana

Na minha opinião sim.
Quanto mais você utilizar os recursos do banco de dados melhor, pois fica muito mais fácil de controlar a performance da aplicação.
Responder Citar

17/08/2014

William (devwilliam)

Respeito muito a opinião da Marisiana, mas por experiências passadas ruins e filosofia pessoal de trabalho não gosto de trabalhar com instruções SQLs proprietárias nos meus projetos, nesse caso o comando DATE_FORMAT() é uma função que pertence ao MySQL, não iria funcionar no SQL Server por exemplo.

Já passei por situações onde precisei migrar o SGBD da aplicação e garanto que foi uma experiência ruim porque na época a aplicação possuía varias instruções proprietárias, demorei muito!

Hoje em dia meus projetos principalmente em PHP são independentes de SGBD utilizo PDO para ter essa flexibilidade, mesmo existindo questões de performance em discussão ainda prefiro a independência de SGBDs.

Por essas e outras prefiro deixar a maioria das regras na aplicação.

Obs.: Existem situações onde Store Procedures e Triggers são necessárias, mas entra uma boa documentação.
Responder Citar

17/08/2014

Fabio Santos

Podemos concluir que no MySQL é melhor deixar como está, você considera o mesmo para outros bancos mais robustos?
Responder Citar

17/08/2014

William (devwilliam)

Como regra geral deixo os tipos de dados como estão no banco de dados independente de qual seja o SGBD, trato o retorno direto na aplicação!
Responder Citar

17/08/2014

Fabio Santos

Obrigado William, na documentação do PHP existe alguma parte direcionada a interação com banco de dados?
Responder Citar

18/08/2014

Marisiana

Respeito muito a opinião da Marisiana, mas por experiências passadas ruins e filosofia pessoal de trabalho não gosto de trabalhar com instruções SQLs proprietárias nos meus projetos, nesse caso o comando DATE_FORMAT() é uma função que pertence ao MySQL, não iria funcionar no SQL Server por exemplo. Já passei por situações onde precisei migrar o SGBD da aplicação e garanto que foi uma experiência ruim porque na época a aplicação possuía varias instruções proprietárias, demorei muito! Hoje em dia meus projetos principalmente em PHP são independentes de SGBD utilizo PDO para ter essa flexibilidade, mesmo existindo questões de performance em discussão ainda prefiro a independência de SGBDs. Por essas e outras prefiro deixar a maioria das regras na aplicação. Obs.: Existem situações onde Store Procedures e Triggers são necessárias, mas entra uma boa documentação.


Também respeito tua opinião William!
Porém, esse trabalho de alterações não mudaria muito se tivesse que migrar a aplicação para uma outra tecnologia, como por exemplo, Delphi para Java.
Existem casos e casos, mas a escolha do SGBD que será utilizado nas aplicações deve sempre ter muito mais atenção do que todo o restante.
Falo isso porque vejo que a maioria dos profissionais focam demais nas aplicações e esquecem que o coração do sistema é o banco de dados.
Responder Citar

18/08/2014

William (devwilliam)

Suas colocações são válidas e pertinentes Marisiana, com certeza a maneira correta (raras empresas ou no mundo perfeito) de se pensar em um projeto de software passa fortemente na escolha do SGBD!!!

A única ressalva é que para clientes pequenos e médios (são extremamente imediatistas) ou até projetos que são pegos no meio do caminho as coisas são bem diferentes.

Mas como falei nossas opiniões são fortemente embasadas em experiências profissionais (boas ou ruins) que tivemos no passado, somando-se experiências de 2 profissionais se tem um universo de conhecimento muito grande e valioso.
Responder Citar

18/08/2014

Marisiana

Boa observação William!
Cada caso é um caso...
Responder Citar

18/08/2014

Marisiana

Claro, quando se pega um sistema já existente é mais complicado, porque tem que ver o que tem e o que pode ser feito.
Mas eu penso que mesmo para sistemas menores, o analista e desenvolvedor deve ter essa noção e pensar na melhor opção.
Responder Citar

18/08/2014

Fabio Santos

Obrigado William, na documentação do PHP existe alguma parte direcionada a interação com banco de dados?


Para tentar finalizar e esclarecer tudo:

Em sistemas pequenos feitos do inicio, PHP ou no Banco?

Em sistemas maiores feitos do inicio, PHP ou Banco?
Responder Citar