Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

MySQL formato de fecha timestamp por defecto

Estas en el tema de MySQL formato de fecha timestamp por defecto en el foro de Mysql en Foros del Web. Buenas tengo una tabla donde he creado un campo Timestamp y por defecto le he marcado la opción de "default timestamp" con lo que sin ...
  #1 (permalink)  
Antiguo 06/02/2012, 23:52
 
Fecha de Ingreso: enero-2004
Ubicación: here I Am
Mensajes: 437
Antigüedad: 20 años, 3 meses
Puntos: 1
MySQL formato de fecha timestamp por defecto

Buenas tengo una tabla donde he creado un campo Timestamp y por defecto le he marcado la opción de "default timestamp" con lo que sin pasarle el parametro de la fecha y hora cuando hago una sentencia insert into ... el coje la fecha de inserción del sistema , el tema está en que me lo coje en formato 2012-02-07 06:44:54

Hay la posibilidad de que lo cree en formato dd/mm/YYYY hora , o para hacer eso dejo el campo sin predeterminado y cada vez que haga un insert desde PHP construyo yo la fecha con el formato deseado ?

Gracias,
__________________
Nuevo foro sobr el mundo del motor - Renault foro
http://www.renaultforo.com
  #2 (permalink)  
Antiguo 07/02/2012, 01:17
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: MySQL formato de fecha timestamp por defecto

Primero cambia el tipo de campo a date. Luego utiliza como valor por defecto CURRENT_DATE.
Consulta la documentación de MySQL.
Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 07/02/2012, 05:17
 
Fecha de Ingreso: enero-2004
Ubicación: here I Am
Mensajes: 437
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: MySQL formato de fecha timestamp por defecto

Cita:
Iniciado por repara2 Ver Mensaje
Primero cambia el tipo de campo a date. Luego utiliza como valor por defecto CURRENT_DATE.
Consulta la documentación de MySQL.
Saludos
Ya lo he consultado en la web de mysql y pone que date solo guarda "data" sin fecha y hora por eso quiero usar timestamp.

Cita:
El tipo DATETIME se usa cuando necesita valores que contienen información de fecha y hora. MySQL recibe y muestra los valores DATETIME en formato 'YYYY-MM-DD HH:MM:SS' . El rango soportado es de '1000-01-01 00:00:00' a '9999-12-31 23:59:59'. (“Soportado” significa que aunque valores anteriores pueden funcionar, no hay garantías)

El tipo DATE se usa cuando necesita sólo un valor de fecha, sin una parte de hora. MySQL recibe y muestra los valores DATE en formato 'YYYY-MM-DD' . El rango soportado es de '1000-01-01' a '9999-12-31'.
__________________
Nuevo foro sobr el mundo del motor - Renault foro
http://www.renaultforo.com

Última edición por radge; 07/02/2012 a las 06:28
  #4 (permalink)  
Antiguo 07/02/2012, 09:52
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: MySQL formato de fecha timestamp por defecto

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 original
  1. mysql> CREATE TABLE tabla (
  2.     -> campo VARCHAR(10));
  3. Query OK, 0 rows affected (0.08 sec)
  4.  
  5. mysql> INSERT INTO tabla (campo) VALUES ('uno');
  6. Query OK, 1 row affected (0.06 sec)
  7.  
  8. mysql> INSERT INTO tabla (fecha, campo) VALUES (NULL, 'dos');
  9. Query OK, 1 row affected (0.03 sec)
  10.  
  11. mysql> INSERT INTO tabla (fecha, campo) VALUES (NOW(), 'tres');
  12. Query OK, 1 row affected (0.03 sec)
  13.  
  14. mysql> INSERT INTO tabla (fecha, campo) VALUES ('1970-01-01', 'cuatro');
  15. Query OK, 1 row affected (0.05 sec)
  16.  
  17. mysql> SELECT * FROM tabla;
  18. +---------------------+--------+
  19. | fecha               | campo  |
  20. +---------------------+--------+
  21. | 2012-02-07 09:12:42 | uno    |
  22. | 2012-02-07 09:12:42 | dos    |
  23. | 2012-02-07 09:12:42 | tres   |
  24. | 1970-01-01 00:00:00 | cuatro |
  25. +---------------------+--------+
  26. 4 rows in set (0.00 sec)

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:

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla
  2.     -> VALUES ('28/02/2011 13:02:59', 'cinco');
  3. ERROR 1292 (22007): Incorrect datetime value: '28/02/2011 13:02:59' for column 'fecha' at  row 1

En este caso sería necesario utilizar las funciones para convertir cadenas a fechas, como STR_TO_DATE:

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla VALUES
  2.     -> (STR_TO_DATE('28/02/2011 13:02:59', '%d/%m/%Y %H:%i:%s'), 'cinco');
  3. Query OK, 1 row affected (0.06 sec)
  4.  
  5. mysql> SELECT * FROM tabla;
  6. +---------------------+--------+
  7. | fecha               | campo  |
  8. +---------------------+--------+
  9. | 2011-02-28 13:02:59 | cinco  |
  10. +---------------------+--------+
  11. 6 rows in set (0.02 sec)

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
  1. mysql> SELECT * FROM tabla;
  2. +---------------------+--------+
  3. | fecha               | campo  |
  4. +---------------------+--------+
  5. | 2012-02-07 09:12:42 | uno    |
  6. | 2012-02-07 09:12:42 | dos    |
  7. | 2012-02-07 09:12:42 | tres   |
  8. | 1970-01-01 00:00:00 | cuatro |
  9. | 2011-02-28 13:02:59 | cinco  |
  10. +---------------------+--------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') fecha, campo
  14.     -> FROM tabla;
  15. +---------------------+--------+
  16. | fecha               | campo  |
  17. +---------------------+--------+
  18. | 07/02/2012 09:12:42 | uno    |
  19. | 07/02/2012 09:12:42 | dos    |
  20. | 07/02/2012 09:12:42 | tres   |
  21. | 01/01/1970 00:00:00 | cuatro |
  22. | 28/02/2011 13:02:59 | cinco  |
  23. +---------------------+--------+
  24. 5 rows in set (0.00 sec)

Espero que con esto se aclaren tus dudas.

Saludos
Leo.

Etiquetas: defecto, fecha, formato, php, tabla, timestamp, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:10.