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?
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?
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';
}