Valor padrão para campo do tipo DATE

359 views
Skip to first unread message

Gustavo Adolfo

unread,
Nov 9, 2009, 12:16:35 AM11/9/09
to PHP-MYSQL-BR
Amigos, paz a todos.

Estou precisando determinar um valor padrão para um campo DATE, sendo
que seja a data atual. Tentei construir o campo da seguinte maneira,
mas não funcionou:

dtInscricao DATE not null default CURDATE()

Achei que a função CURDATE ou CURRENT_DATE pudessem ser usadas para
definir o valor padrão de uma coluna, mas não funcionou comigo desta
forma.

Alguém poderia discutir a questão ou sugerir uma outra solução dentro
do próprio banco de dados? Pensei em criar um gatilho (trigger) mas
preferia que a implementação fizesse parte da própria tabela, se
possível.

Desde já agradeço a colaboração.

Lourival Costa

unread,
Nov 9, 2009, 11:15:38 AM11/9/09
to php-my...@googlegroups.com
Olá Gustavo,

Até onde sei, não há como vc definir um "valor padrão" associado a uma função (como CURDATE(), por exemplo) ao criar uma tabela. Como padrão, o campo DATE é definido como 0000-00-00 (aaaa-mm-dd), que deverá ser atualizado a cada novo insert na tabela onde, aí sim, você pode utilizar o CURDATE() sem necessidade de tratamento da informação, o que, na minha opinião, dá na mesma que vc colocar a data atual como padrão para o valor do campo DATE.
Não sei exatamente porque vc considera importante o valor padrão para o campo DATE ser a data atual. Se for alguma característica especial do teu aplicativo, explica aqui pra gente o que é que está tentando fazer.
Espero ter contribuído.
Abçs,
--
Lourival Costa
lour...@gmail.com

Gustavo Adolfo

unread,
Nov 10, 2009, 12:15:04 PM11/10/09
to PHP-MYSQL-BR
Obrigado pela resposta Lourival.
Realmente o valor padrão original para campos data é '0000-00-00' e é
na SQL de inclusão que uso a função CURDATE(). Porém, imaginei que
fosse possível e mais prático se isso pudesse já ser definido na
estrutura da tabela. Lógico que poderia criar um trigger para gerar a
data a cada nova inclusáo, mas preferi fazer isso no próprio SQL de
inclusão.
O trabalho em questão é esse: http://www.fapce.com.br/inicien2009/
Obrigado pela colaboração.

Frat.,
Gustavo Adolfo

emersonpereiras

unread,
Dec 2, 2009, 10:42:34 PM12/2/09
to PHP-MYSQL-BR
Vamos dizer que montei um banco de dados de notícias e que preciso
mostrar as seguintes tabelas:
- titulo
- descrição
- conteudo
- materia_data

Bem normalmente no página que vai inserir o conteúdo no banco de dados
(administrador) eu modelaria desta forma:
Criaria um input com as seguinte linha: <?php echo date("Y-m-d H:i");?
>
-------------------

Ná página que vai mostrar o conteúdo eu modelo desta forma
SELECT *,DATE_FORMAT(materia_data, '%d-%m-%Y - %Hh:%i') as
materia_data

---------------------
DETALHAMENTO:
Por que criar um input em vez de um hidden;
- Pois caso o adminstrador fosse uma pessoa leiga e quisesse alterar a
data da matério do site de notícias ele poderia alterar normalmente já
que o input apareceria somente com a data atual e com possibilidade de
alteração.

Em relação ao página onde nos vamos ver o conteúdo, poderiamos colocar
a senguinte query para mostrar as informações em nossa página PHP
(SELECT *,DATE_FORMAT(materia_data, '%d-%m-%Y - %Hh:%i'), sabe por
que?

SELECT *,DATE_FORMAT(materia_data, '%d-%m-%Y - %Hh:%i')
%d-%m-%Y - %Hh:%i
Seria mais ou menos isso 03-12-2009 01h:32 - Lembrando que este
formato transforma o horario em formato americano no formato
brasileiro

H - Hora em 24h
h - hora em 12h
i - minutos sem os segundos
d - dia
m - mês em dois digitos
M - mês por extenso
y - ano em dois digitos
Y - ano em quatro digitos

emersonpereiras

unread,
Dec 2, 2009, 11:06:48 PM12/2/09
to PHP-MYSQL-BR
Quando for cadastrar no banco via PHP
<?php echo date("Y-m-d H:i");?>

--------------------
Quando for visualuzar via PHP (supondo que a data esta no formato
americano a propria query ja muda para o formato brasileiro)
SELECT *,DATE_FORMAT(data, '%d-%m-%Y - %Hh:%i') as data
Reply all
Reply to author
Forward
0 new messages