Foros del Web » Programando para Internet » PHP »

Tengo problemas con fecha DATETIME

Estas en el tema de Tengo problemas con fecha DATETIME en el foro de PHP en Foros del Web. Buenas tardes a tod@s. En primer lugar darles las gracias por hacer de este foro uno de los mejores en programación que conozco. En segundo ...
  #1 (permalink)  
Antiguo 19/10/2008, 09:38
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Tengo problemas con fecha DATETIME

Buenas tardes a tod@s. En primer lugar darles las gracias por hacer de este foro uno de los mejores en programación que conozco. En segundo lugar, y como no iba a ser menos, necesito sus ayudas y comentarios. Les comento:
Tengo una base de datos con un campo fecha que es DATETIME.
Para meter datos en ella, tengo un formulario que recoge la fecha en un STRING en formato dd/mm/yyyy.
El problema me me aparece cuando tengo el INSERT a la base de datos. No sé cómo convertir ese string, que representa una fecha, en el campo DATETIME correcto para meterlo en la base de datos. No puedo y me da problemas.

He leido bastante pero no consigo aclararme. Necestito la ayuda de uestedes ya que me he quedado clavado aquí.
Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 19/10/2008, 09:56
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Tengo problemas con fecha DATETIME

cuando lo insertes, puedes simplemente pasarle la funcion date(), la cual te da la fecha actual, ahora que si ya tienes la fecha, y deseas convertirla estan las funciones date() y strtotime(), para lo cual puedes pasar por aqui: http://www.php.net/strtotime
http://www.php.net/date

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 19/10/2008, 11:01
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Tengo problemas con fecha DATETIME

Ya lo he intentado pero no va:
ejemplo: tengo un string con "30/11/1970" hago esto:
$timestamp = strtotime($pParams['fechatitulacion']); //contiene la fecha anterior. Este parámetro enviado por post desde el formulario va ok.
$fecha = date("Y-m-d h:i:s",$timestamp);
y consigo 1970-01-01 01:00:00

estoy hecho un lío, ¿verdad?
  #4 (permalink)  
Antiguo 19/10/2008, 11:59
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Tengo problemas con fecha DATETIME

No seran los formatos de las fechas

tienes esta primero en un string "30/11/1970" osea, dd/mm/YYYY

y despues alreves YYYY/mm/dd
  #5 (permalink)  
Antiguo 19/10/2008, 12:15
(Desactivado)
 
Fecha de Ingreso: octubre-2008
Ubicación: Lima
Mensajes: 190
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Tengo problemas con fecha DATETIME

Cita:
Iniciado por jaronu Ver Mensaje
No seran los formatos de las fechas

tienes esta primero en un string "30/11/1970" osea, dd/mm/YYYY

y despues alreves YYYY/mm/dd

Hola! soy nuevo...

bueno sobre tu problema aver intenta con esto

en la hora es esto

$hora=date("H:i:s");


en la fecha

$fecha = date("d/m/20y");

Saludos!
  #6 (permalink)  
Antiguo 19/10/2008, 22:09
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Tengo problemas con fecha DATETIME

Cita:
en la fecha

$fecha = date("d/m/20y");
No tienes que poner 20y.
Puedes usar "Y" que devuelve la fecha en formato YYYY, osea 2008.
  #7 (permalink)  
Antiguo 19/10/2008, 23:40
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Tengo problemas con fecha DATETIME

Hola,

Cita:
Iniciado por edumarbella Ver Mensaje
... tengo un string con "30/11/1970" ...
$timestamp = strtotime($pParams['fechatitulacion']);
$fecha = date("Y-m-d h:i:s",$timestamp);
El inconveniente con strtotime() en este caso, es que espera una fecha en formato inglés americano de entrada, mes - día - año; o su equivalente en varios formatos. '30/11/1970' invariablemente va a ser '1970-01-01 01:00:00', puesto que strtotime() devolvió un índice de error -1.


Las fechas en MySQL deben ser Y-m-d (o en su defecto Ymd). SQL Server también puede interpretar 'Ymd'. Suponiendo que la fecha que recibes en el post, tiene formato 'britanico', y está separada por diagonales. (No tomando en cuenta el time del datetime, el cual va a ser 00:00:00) :

Código PHP:
<?php

$fecha 
'30/11/1970';
$fechb explode('/'$fecha);

if(
checkdate($fechb[1], $fechb[0], $fechb[2])) {
  echo 
sprintf(
    
"INSERT INTO tabla (id, fecha) VALUES (1, %s);",
    
date('Ymd'mktime(000$fechb[1], $fechb[0], $fechb[2])));
  echo 
"\n"#<-- no es parte de la instrucción sql.
} else {
  echo 
"Formato Incorrecto.\n";
}
?>
Saludos,

ps:

No es la única forma de crear la instrucción SQL, ni la mejor ... pero funciona de acuerdo a cualquier i18n que tengas en el servidor; una vez la fecha de entrada recibida en el post, tenga el formato adecuado (d/m/a).

Última edición por HackmanC; 19/10/2008 a las 23:57 Razón: ps
  #8 (permalink)  
Antiguo 20/10/2008, 13:12
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Sonrisa Respuesta: Tengo problemas con fecha DATETIME

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,


El inconveniente con strtotime() en este caso, es que espera una fecha en formato inglés americano de entrada, mes - día - año; o su equivalente en varios formatos. '30/11/1970' invariablemente va a ser '1970-01-01 01:00:00', puesto que strtotime() devolvió un índice de error -1.


Las fechas en MySQL deben ser Y-m-d (o en su defecto Ymd). SQL Server también puede interpretar 'Ymd'. Suponiendo que la fecha que recibes en el post, tiene formato 'britanico', y está separada por diagonales. (No tomando en cuenta el time del datetime, el cual va a ser 00:00:00) :

Código PHP:
<?php

$fecha 
'30/11/1970';
$fechb explode('/'$fecha);

if(
checkdate($fechb[1], $fechb[0], $fechb[2])) {
  echo 
sprintf(
    
"INSERT INTO tabla (id, fecha) VALUES (1, %s);",
    
date('Ymd'mktime(000$fechb[1], $fechb[0], $fechb[2])));
  echo 
"\n"#<-- no es parte de la instrucción sql.
} else {
  echo 
"Formato Incorrecto.\n";
}
?>
Saludos,

ps:

No es la única forma de crear la instrucción SQL, ni la mejor ... pero funciona de acuerdo a cualquier i18n que tengas en el servidor; una vez la fecha de entrada recibida en el post, tenga el formato adecuado (d/m/a).

Gracias Gracias Gracias y Gracias FUNCIONA A LA PERFECCION
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 09:40.