Si tengo una cadena PHP en el formato AAAA-DD-MM y una marca de tiempo en MySQL, ¿existe una buena manera de convertir entre ellas?

StackOverflow https://stackoverflow.com/questions/20598

Pregunta

Estoy interesado en hacer comparaciones entre la cadena de fecha y la marca de tiempo de MySQL.Sin embargo, no veo una conversión fácil.¿Estoy pasando por alto algo obvio?

¿Fue útil?

Solución

Conversión de marca de tiempo a formato:

date('Y-m-d', $timestamp);

Conversión de formato a marca de tiempo:

mktime(0, 0, 0, $month, $day, $year, $is_dst);

Ver fecha y mktime para más documentación.

Cuando se trata de almacenar, depende de usted si desea utilizar el formato DATE de MySQL para registrarlo como una fecha formateada;como un número entero para almacenar como marca de tiempo UNIX;o puede utilizar el formato TIMESTAMP de MySQL que convierte una marca de tiempo numérica en un formato legible. Consulte el documento MySQL para obtener información sobre la MARCA DE TIEMPO.

Otros consejos

Puedes evitar tener que usar strtotime() o getdate() en PHP usando MySQL UNIX_TIMESTAMP() función.

SELECT UNIX_TIMESTAMP(timestamp) FROM sometable

Los datos resultantes serán una marca de tiempo Unix entera estándar, por lo que puede hacer una comparación directa con time().

Escribí esta pequeña función para simplificar el proceso:

/**
 * Convert MySQL datetime to PHP time
 */
function convert_datetime($datetime) {
  //example: 2008-02-07 12:19:32
  $values = split(" ", $datetime);

  $dates = split("-", $values[0]);
  $times = split(":", $values[1]);

  $newdate = mktime($times[0], $times[1], $times[2], $dates[1], $dates[2], $dates[0]);

  return $newdate;
}

espero que esto ayude

strtotime() y obtener la fecha() Hay dos funciones que se pueden utilizar para obtener fechas de cadenas y marcas de tiempo.Sin embargo, no existe una función de biblioteca estándar que convierta entre marcas de tiempo de MySQL y PHP.

Usa el PHP Fecha función.Es posible que deba convertir la marca de tiempo de MySQL a una marca de tiempo de Unix en su consulta utilizando el UNIX_TIMESTAMP función en mysql.

Una cadena de fecha del formato:

YYYY-MM-DD

no tiene tiempo asociado con él.Una marca de tiempo MySQL tiene la forma:

YYYY-MM-DD HH:mm:ss

Para comparar los dos, tendrás que agregar una hora a la cadena de fecha, como medianoche, por ejemplo.

$datetime = '2008-08-21'.' 00:00:00';

y luego usar una función para comparar el tiempo epoc entre ellos

if (strtotime($datetime) > strtotime($timestamp)) {
    echo 'Datetime later';
} else {
    echo 'Timestamp equal or greater';
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top