Se ho una stringa PHP nel formato AAAA-GG-MM e un timestamp in MySQL, esiste un buon modo per convertirli tra loro?

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

Domanda

Sono interessato a fare confronti tra la stringa della data e il timestamp MySQL.Tuttavia, non vedo una conversione facile.Sto trascurando qualcosa di ovvio?

È stato utile?

Soluzione

Conversione da timestamp a formato:

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

Conversione da formattato a timestamp:

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

Vedere data E mktime per ulteriore documentazione.

Quando si tratta di archiviare, sta a te decidere se utilizzare il formato MySQL DATE per l'archiviazione come data formattata;come numero intero per l'archiviazione come timestamp UNIX;oppure puoi utilizzare il formato TIMESTAMP di MySQL che converte un timestamp numerico in un formato leggibile. Controlla il documento MySQL per informazioni su TIMESTAMP.

Altri suggerimenti

Puoi evitare di doverlo usare strtotime() O getdate() In PHP utilizzando MySQL UNIX_TIMESTAMP() funzione.

SELECT UNIX_TIMESTAMP(timestamp) FROM sometable

I dati risultanti saranno un timestamp Unix intero standard, quindi puoi eseguire un confronto diretto time().

Ho scritto questa piccola funzione per semplificare il processo:

/**
 * 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;
}

Spero che aiuti

strtotime() E ricevi la data() sono due funzioni che possono essere utilizzate per ottenere date da stringhe e timestamp.Tuttavia, non esiste una funzione di libreria standard che converta tra i timestamp MySQL e PHP.

Usa PHP Data funzione.Potrebbe essere necessario convertire il timestamp mysql in un timestamp Unix nella query utilizzando il file UNIX_TIMESTAMP funzione in MySQL.

Una stringa di data nel formato:

YYYY-MM-DD

non ha tempo associato ad esso.Un timestamp MySQL è nel formato:

YYYY-MM-DD HH:mm:ss

per confrontare i due, dovrai aggiungere un'ora alla stringa della data, come ad esempio mezzanotte

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

e quindi utilizzare una funzione per confrontare il tempo epoc tra di loro

if (strtotime($datetime) > strtotime($timestamp)) {
    echo 'Datetime later';
} else {
    echo 'Timestamp equal or greater';
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top