Array
(
)

Datas em PHP com MySQL

PHP
Fabio Santos
   - 16 ago 2014

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.

William (devwilliam)
   - 16 ago 2014

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
#Código

<?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):
#Código
SELECT DATE_FORMAT(data_banco,'%d/%m/%Y') FROM TABELA

Fabio Santos
   - 16 ago 2014

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

Marcio Araujo
   - 17 ago 2014

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

Marisiana
   - 17 ago 2014

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.

Fabio Santos
   - 17 ago 2014

Melhor no banco então?

Marisiana
   - 17 ago 2014

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.

William (devwilliam)
   - 17 ago 2014

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.

Fabio Santos
   - 17 ago 2014

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

William (devwilliam)
   - 17 ago 2014

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!

Fabio Santos
   - 17 ago 2014

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

Marisiana
   - 18 ago 2014


Citação:
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.

William (devwilliam)
   - 18 ago 2014

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.

Marisiana
   - 18 ago 2014

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

Marisiana
   - 18 ago 2014

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.

Fabio Santos
   - 18 ago 2014


Citação:
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?

William (devwilliam)
   - 18 ago 2014

Fabio 2 profissionais postaram suas opiniões, agora fica a seu cargo escolher qual delas melhor se encaixa no seu projeto!!!

Fabio Santos
   - 18 ago 2014

Entendi, tenho que fazer do que achar melhor e mais conveniente. valeu