Hola radge:
Vamos aclarando una cosa: las fechas, en cualquier motor de BD SIEMPRE SE ALMACENAN EN FORMATO ANSI (yyyy-mm-dd hh:mi:ss), ya que este es el formato estándar...
Es recomendable que para el manejo de fecha también utilices el formato ANSI y sólo cuando necesites presentar la información le des el formato que quieras a las fechas.
MySQL proporciona muchas funciones para el manejo y formateo de fechas, deberías darle un vistazo:
http://dev.mysql.com/doc/refman/5.0/...functions.html
Ahora bien, volvamos a tu problema: no hay ningún inconveniente en dejar el valor por default para tu columna timestamp, siempre podrás insertar los valores con el formato que quieras, checa este script:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.08 sec)
Query OK, 1 row affected (0.06 sec)
Query OK, 1 row affected (0.03 sec)
Query OK, 1 row affected (0.03 sec)
Query OK, 1 row affected (0.05 sec)
+---------------------+--------+
| fecha | campo |
+---------------------+--------+
| 2012-02-07 09:12:42 | uno |
| 2012-02-07 09:12:42 | dos |
| 2012-02-07 09:12:42 | tres |
| 1970-01-01 00:00:00 | cuatro |
+---------------------+--------+
Observa que el campo FECHA tiene como DEFAULT el valor CURRENT_TIMESTAMP, de tal manera que puedes hacer inserts sin mencionar el campo, enviando un NULL, utilizando la función NOW() (o calquier otra función para recuperar fecha como currdate) o inclusive enviando una cadena en formato ANSI ('1970-01-01'), aquí no se necesita hacer ninguna conversión.
Sin embargo, no podrías hacer un insert directo con una cadena que no tenga el formato ANSI:
En este caso sería necesario utilizar las funciones para convertir cadenas a fechas, como STR_TO_DATE:
Código MySQL:
Ver original -> (STR_TO_DATE('28/02/2011 13:02:59', '%d/%m/%Y %H:%i:%s'), 'cinco'); Query OK, 1 row affected (0.06 sec)
+---------------------+--------+
| fecha | campo |
+---------------------+--------+
| 2011-02-28 13:02:59 | cinco |
+---------------------+--------+
Observa que la fecha se sigue almacenando con formato ANSI, aunque al momento del insert yo le estoy enviando un formato dd/mm/yyyy... para recuperar la información en este mismo formato tendría que hacer uso de la función DATE_FORMAT:
Código MySQL:
Ver original+---------------------+--------+
| fecha | campo |
+---------------------+--------+
| 2012-02-07 09:12:42 | uno |
| 2012-02-07 09:12:42 | dos |
| 2012-02-07 09:12:42 | tres |
| 1970-01-01 00:00:00 | cuatro |
| 2011-02-28 13:02:59 | cinco |
+---------------------+--------+
+---------------------+--------+
| fecha | campo |
+---------------------+--------+
| 07/02/2012 09:12:42 | uno |
| 07/02/2012 09:12:42 | dos |
| 07/02/2012 09:12:42 | tres |
| 01/01/1970 00:00:00 | cuatro |
| 28/02/2011 13:02:59 | cinco |
+---------------------+--------+
Espero que con esto se aclaren tus dudas.
Saludos
Leo.