Hola,
Cita:
Iniciado por edumarbella ... 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(0, 0, 0, $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).