Ich möchte Vergleiche zwischen der Datumszeichenfolge und dem MySQL-Zeitstempel anstellen. Allerdings sehe ich keine einfache Konvertierung. Betrachte ich etwas Offensichtliches?Wenn ich eine PHP-Zeichenfolge im Format YYYY-DD-MM und einen Zeitstempel in MySQL habe, gibt es eine gute Möglichkeit, zwischen ihnen zu konvertieren?
Antwort
von Zeitstempel-Format konvertieren:
date('Y-m-d', $timestamp);
von formatierten Umstellung auf Datenstand:
mktime(0, 0, 0, $month, $day, $year, $is_dst);
Siehe date und mktime für die weitere Dokumentation.
Wenn es um das Speichern geht, liegt es an Ihnen, ob Sie das MySQL DATE-Format zum Streamen als formatiertes Datum verwenden. als Ganzzahl zum Speichern als UNIX-Zeitmarke; oder Sie können das TIMESTAMP-Format von MySQL verwenden, das einen numerischen Zeitstempel in ein lesbares Format umwandelt. Check the MySQL Doc für TIMESTAMP Info.
strtotime() und getdate() sind zwei Funktionen, die verwendet werden können, um Daten aus Zeichenfolgen und Zeitstempeln abzurufen. Es gibt keine Standard-Bibliotheksfunktion, die zwischen MySQL- und PHP-Zeitstempeln konvertiert.
Verwenden Sie die PHP Date Funktion. Möglicherweise müssen Sie den mysql-Zeitstempel in Ihrer Abfrage in einen Unix-Zeitstempel konvertieren, indem Sie die Funktion UNIX_TIMESTAMP in mysql verwenden.
Ein Datum String der Form:
YYYY-MM-DD
hat keine Zeit mit ihr verbunden sind. Ein MySQL-Zeitstempel ist von der Form:
YYYY-MM-DD HH:mm:ss
die beide zu vergleichen, werden Sie entweder einen Zeitpunkt nach dem Datum Zeichenfolge, wie Mitternacht zum Beispiel
$datetime = '2008-08-21'.' 00:00:00';
hinzufügen und dann eine Funktion verwenden die epoc Zeit zwischen ihnen
if (strtotime($datetime) > strtotime($timestamp)) {
echo 'Datetime later';
} else {
echo 'Timestamp equal or greater';
}
zu vergleichen, können Sie vermeiden, PHP von usi verwenden strtotime()
oder getdate()
in mit ng MySQL UNIX_TIMESTAMP()
Funktion.
SELECT UNIX_TIMESTAMP(timestamp) FROM sometable
Die resultierenden Daten werden ein Standard-Integer-Unix-Zeitstempel, so dass Sie einen direkten Vergleich zu time()
tun können.
Ich schrieb diese kleine Funktion, 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, die
kann durch einen einzigen Aufruf ersetzt werden, um strtotime Dieser ganze Funktion hilft. Warum erfinden Sie das Rad neu? –
Mein Schlechter, ich baute dies auf, als ich Probleme in der Vergangenheit hatte (aus einem Grund, der mir jetzt entgeht). –