Foros del Web » Programando para Internet » PHP »

Mysql y PHP 1970-01-01

Estas en el tema de Mysql y PHP 1970-01-01 en el foro de PHP en Foros del Web. Hola a todos, soy nuevo en esta pagina, tratare de explicarles mi problema lo mejor que pueda. estoy haciendo una pagina para la que ocupo ...
  #1 (permalink)  
Antiguo 03/05/2012, 23:17
 
Fecha de Ingreso: mayo-2012
Mensajes: 7
Antigüedad: 11 años, 11 meses
Puntos: 0
Pregunta Mysql y PHP 1970-01-01

Hola a todos, soy nuevo en esta pagina, tratare de explicarles mi problema lo mejor que pueda.

estoy haciendo una pagina para la que ocupo almacenar una fecha en Mysql, no quiero que el campo para le facha en Mysql sea varchar por lo que lo puse en DATE,
pero al momento de ejecutar la sentencia SQL y reviso la base de datos veo que en el campo fecha no me guarda el valor que le pongo al campo en mi formulario, si no que me lo guarda 1970-01-01.

este el codigo que estoy utilizando:

$date = $_POST['fecha'];//almaceno en $date lo que introdusco en mi formulario
$dateToMysql = date('Y-m-d',strtotime($date));//despues le doy formato y lo convierto para que se pueda almacenar

espero y me puedan ayudar, estaria muy agradecido
  #2 (permalink)  
Antiguo 04/05/2012, 09:09
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Mysql y PHP 1970-01-01

Bienvenido al foro,

Primero que nada, en qué formato estas ingresando la fecha en tu formulario? Puede que la estés ingresando de esta manera dd/mm/yyyy y php la reconoce en este formato mm/dd/yyyy, osea que la ingresar por ejemplo 22/05/2012 php lo toma como una fecha invalida y te devuelve 1970-01-01.

Si este es el caso, la solución es cambiar los '/' por '-':

Código PHP:
Ver original
  1. $date = str_replace('/', '-', $_POST['fecha']);

Si este no es el caso, por favor aclara como introduces la fecha en tu formulario.

Saludos.
  #3 (permalink)  
Antiguo 04/05/2012, 09:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Mysql y PHP 1970-01-01

En la página oficial hay una nota importante que indica
Cita:
The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
Cita:
El rango válido de una marca de tiempo es típicamente desde Fri, 13 Dec 1901 20:45:54 GMT a Tue, 19 Jan 2038 03:14:07 GMT. (Estas son las fechas que corresponden a los valores mínimo y máximo de un entero con signo de 32 bit). Sin embargo, antes de PHP 5.1.0 este rango estaba limitado desde 01-01-1970 a 19-01-2038 en algunos sistemas (p.ej. Windows).
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 04/05/2012, 12:11
 
Fecha de Ingreso: mayo-2012
Mensajes: 7
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Mysql y PHP 1970-01-01

Cita:
Iniciado por quike88 Ver Mensaje
Bienvenido al foro,

Primero que nada, en qué formato estas ingresando la fecha en tu formulario? Puede que la estés ingresando de esta manera dd/mm/yyyy y php la reconoce en este formato mm/dd/yyyy, osea que la ingresar por ejemplo 22/05/2012 php lo toma como una fecha invalida y te devuelve 1970-01-01.

Si este es el caso, la solución es cambiar los '/' por '-':

Código PHP:
Ver original
  1. $date = str_replace('/', '-', $_POST['fecha']);

Si este no es el caso, por favor aclara como introduces la fecha en tu formulario.

Saludos.
agregando mas información a lo que escribí anteriormente, ingreso la informacion a la base de datos de esta manera:
$insertSQL = sprintf("INSERT INTO promociones (nombre, fecha, descripcion) VALUES ('%s', '$dateToMysql', '%s')",
mysql_real_escape_string(trim($_POST['nombre'])),

mysql_real_escape_string(trim($_POST['descripcion'])));

y la fecha en el formulario la ingreso dd/mm/yyyy, efectivamente como le mencionaste el problema es que el primer numero que pongo en mi campo fecha en realidad php me lo toma como si fuera el mes, por eso al ingresar por ejemplo 30 en el primer campo había error en la base de datos puesto que el mes 30 no existe, por esto muchas gracias !, pero me gustaría saber como puedo ingresar correctamente las fechas, ¿como lo tengo que poner el formulario?, ¿es mejor usar un dropdownlist?, ¿como puedo hacer el almacenamiento de la fecha correctamente? tu sugiere, soy nuevo en esto de php
  #5 (permalink)  
Antiguo 04/05/2012, 14:07
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Mysql y PHP 1970-01-01

Personalmente yo valido para que las fechas se introduzcan en este formato dd/mm/yyyy y luego uso str_replace() como te mencioné en mi comentario anterior.

Saludos.
  #6 (permalink)  
Antiguo 04/05/2012, 18:39
fiu
 
Fecha de Ingreso: diciembre-2006
Ubicación: Barcelona
Mensajes: 128
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Mysql y PHP 1970-01-01

Yo hace años me hice 2 funciones para las fechas y aun las sigo usando

Código PHP:
Ver original
  1. function fechaES2EN($fecha)
  2. {
  3.     $f = split("/",$fecha);
  4.     $f2 = $f[2]."/".$f[1]."/".$f[0];
  5.     return $f2;
  6. }

Esta primera es para convertir las fechas que uso de cara al publico, 24/03/2012 y me las devuelve para meterlas a mysql estil 2012-03-24

Código PHP:
Ver original
  1. function fechaEN2ES($fecha)
  2. {
  3.     $f = explode("-",$fecha);
  4.     $f2 = $f[2]."/".$f[1]."/".$f[0];
  5.     return $f2;
  6. }

Y la seguda pues al reves, cuando leo la fecha 2012-03-24 de mysql, la muestro con esa funcion así 24/03/2012

Antes tendrias que hacer una comprovación de lo que ha introducido el usuario claro, yo para no complicarme, uso un calendario js/jquery que introduzca la fecha en lugar de dejar al usuario escribirla.
  #7 (permalink)  
Antiguo 04/05/2012, 20:11
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Mysql y PHP 1970-01-01

bueno hace un tiempo estuve buscando la manera de insertar las fechas obtenidas de un calendario en que me las daba en el formato d-m-Y y conseguí en el manual de mysql esta función
str_to_date pueden verla en las funciones de fecha http://dev.mysql.com/doc/refman/5.0/...functions.html y puedes hacer algo como esto

Código MySQL:
Ver original
  1. INSERT INTO tabla(campo_fecha) VALUES(str_to_date('20-12-1986', '%d-%m-%Y'))
de manera de no estar haciendo explode con php ni nada por el estilo espero que les sirva, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Etiquetas: dreamweaver, mysql
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 04:25.