Las fechas en Mysql se guardan de la forma aaaa-mm-dd hh:mm:ss ej: "2016-06-11 16:07:56 "
para pasarlo a un formato más legible usamos:
$fechalegible = substr($feped,8,2)."/".substr($feped,5,2)."/".substr($feped,0,4);
Asimismo si tenemos una fecha (por ej del almanaque jquery) y la tenemos que pasar a
sql usamos:
$fechasql=substr($valor,6,4)."-".substr($valor,3,2)."-".substr($valor,0,2);
Para quitar o agregar días a una fecha es:
date('d-m-Y', strtotime(fechasql(fecha-inicial)) + 86400*intval(días a adicionar));
- Date es para darle formato final (para sql será Y-m-d)
- strtotime para pasarlo a tiempo UNIX (segundos luego de 1/1/1970)
- *86400 convierte los días en segundos
- intval me asegura que días sea integer
La función
fusql(fecha) pasa cualquier formato válido de fecha en español a fecha SQL. está explicada en el código
La fecha actual:
date("Y-m-d H:i:s") si no interesa la hora solo
date("Y-m-d").
De fecha MySQL a fecha argentina con barra /
function fechaarg($f) {
return substr($f,8,2) ."/". substr($f,5,2). "/" . substr($f,0,4);
}
De fecha MySQL a fecha argentina con barra /
function fechaguion($f) {
return substr($f,8,2) ."-". substr($f,5,2). "-" . substr($f,0,4);
}
De fecha dd-mm aaaa o dd/mm/aaaa a MySQL
function fechasql($f) {
return substr($f,6,4)."-".substr($f,3,2)."-".substr($f,0,2);
}
De fecha dd-mm aaaa o d/m/aaaa o d-m-aa con/ o - a MySQL
function fusql($f) {
$d=strpos($f,"/",0); //busco la posicion de "/"
$sep="/"; //asigno separador "/"
if ($d === false){ //si no está "/"
$d=strpos($f,"-",0); //busco posición de "-"
$sep="-"; //el separador es "-"
}
if($d==1){ //si la pos de sep es 1
$dia = '0' . substr($f,0,1); // día de 1 dígito, le agrego 0 delante
}else{
$dia = substr($f,0,2);
}
$f = substr($f,$d + 1); //recorto los días y el 1º sep
$m=strpos($f,$sep,0); //busco la posicion del 2º sep
if($m==1){ //si la pos de sep es 1
$mes = '0' . substr($f,0,1); //mes de 1 dígito, le agrego 0 delante
}else{
$mes = substr($f,0,2);
}
$f = substr($f,$m + 1); //recorto los meses me queda el año
if(strlen($f)==4){ //si tiene 4 dígitos queda así
$anno = $f;
}elseif((int)($f)<=50){ //si los dos dígitos son menor a 50
$anno = '20' . $f; //es siglo XXI
}else{
$anno = '19' . $f; // si es mayor a 50 //es siglo XX
}
if(checkdate($mes,$dia,$anno)){ // si los valores son válidos
return $anno."-".$mes."-".$dia; //devuelvo fecha SQL
}else{
return NULL;
}
}