Wenn ich einen PHP-String im Format JJJJ-TT-MM und einen Zeitstempel in MySQL habe, gibt es eine gute Möglichkeit, diese zu konvertieren?

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

Frage

Ich bin daran interessiert, Vergleiche zwischen der Datumszeichenfolge und dem MySQL-Zeitstempel durchzuführen.Allerdings sehe ich keine einfache Umstellung.Übersehe ich etwas Offensichtliches?

War es hilfreich?

Lösung

Konvertieren von Zeitstempel in Format:

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

Konvertieren von formatiert in Zeitstempel:

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

Sehen Datum Und mktime für weitere Dokumentation.

Wenn es um die Speicherung geht, liegt es an Ihnen, ob Sie das MySQL-DATE-Format zum Speichern als formatiertes Datum verwenden.als Ganzzahl zum Speichern als UNIX-Zeitstempel;Alternativ können Sie das TIMESTAMP-Format von MySQL verwenden, das einen numerischen Zeitstempel in ein lesbares Format umwandelt. Überprüfen Sie das MySQL-Dokument für TIMESTAMP-Informationen.

Andere Tipps

Sie können die Verwendung vermeiden strtotime() oder getdate() In PHP durch die Verwendung von MySQL UNIX_TIMESTAMP() Funktion.

SELECT UNIX_TIMESTAMP(timestamp) FROM sometable

Bei den resultierenden Daten handelt es sich um einen ganzzahligen Standard-Unix-Zeitstempel, mit dem Sie einen direkten Vergleich durchführen können time().

Ich habe diese kleine Funktion geschrieben, um den Prozess zu vereinfachen:

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

ich hoffe das hilft

strtotime() Und Verabredung bekommen() sind zwei Funktionen, die verwendet werden können, um Daten aus Zeichenfolgen und Zeitstempeln abzurufen.Es gibt jedoch keine Standardbibliotheksfunktion, die zwischen MySQL- und PHP-Zeitstempeln konvertiert.

Verwenden Sie PHP Datum Funktion.Möglicherweise müssen Sie den MySQL-Zeitstempel in Ihrer Abfrage mithilfe von in einen Unix-Zeitstempel konvertieren UNIX_TIMESTAMP Funktion in MySQL.

Eine Datumszeichenfolge der Form:

YYYY-MM-DD

hat keine Zeit damit verbunden.Ein MySQL-Zeitstempel hat die Form:

YYYY-MM-DD HH:mm:ss

Um die beiden zu vergleichen, müssen Sie der Datumszeichenfolge entweder eine Uhrzeit hinzufügen, beispielsweise Mitternacht

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

und verwenden Sie dann eine Funktion, um die Epoc-Zeit zwischen ihnen zu vergleichen

if (strtotime($datetime) > strtotime($timestamp)) {
    echo 'Datetime later';
} else {
    echo 'Timestamp equal or greater';
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top