Heim >Backend-Entwicklung >PHP-Tutorial >mysql - Gibt es in PHP eine Möglichkeit, zu vergleichen, ob Jahr, Monat und Tag zweier Uhrzeiten gleich sind?
Mein Datenbestand enthält möglicherweise Zeitstempel mit nur Jahr, Monat und Tag. Wenn sie gleich sind, kann ich das abfragen zur Beurteilung und Abfrage? Vielen Dank.
Mein Datenbestand enthält möglicherweise Zeitstempel mit nur Jahr, Monat und Tag. Wenn sie gleich sind, kann ich das abfragen zur Beurteilung und Abfrage? Vielen Dank.
Es gibt eine ganze Reihe von Methoden, aber ich denke, Sie benötigen eine Fuzzy-Abfrage, deshalb werde ich über eine sprechen, die leichter zu verstehen ist
1. Verwenden Sie die Zeit nur mit „Jahr-Monat-Tag“. Die Sortierzeitfunktion wandelt es in einen Zeitstempel um, sodass Sie die Zeit um 0 Uhr an diesem Tag erhalten time1;
2 Verwenden Sie weiterhin die Funktion sorttime, um die Zeit +1 zu erhalten, oder Sie können die Gesamtzahl der Sekunden in a direkt hinzufügen Tag, der Variablenname ist time2 , also gibt es 2 Zeitknoten
3. Verwenden Sie zwischen Abfragen, damit Sie alle Daten des Tages erhalten können
========= Wenn ich es verstehe falsch, bitte korrigieren Sie mich und ich werde es erneut versuchen. Ändern =========
Wir stellen zwei Methoden vor, die erste wird empfohlen
Solange Jahr, Monat und Tag gleich sind, bedeutet dies, die Daten innerhalb eines bestimmten Tagesbereichs abzufragen und den Zeitbereich aktiv zu steuern, beispielsweise die Daten vom 28.10.2016 abzufragen '
<code>$st = strtotime("2016-10-28"); $et = strtotime("2016-10-28 23:59:59"); select * from table where date_field between $st and $et</code>
Eingebaute Funktion mysql
direkt verwenden FROM_UNIXTIME(date_field, '%Y%m%d')
<code>select * from table where FROM_UNIXTIME(date_field,'%Y%m%d') ="2016-10-28" </code>
Das Folgende ist das gespeicherte Feld im datetime
-Formatsql
<code>select * from table where date_field between "2016-10-28" and "2016-10-28 23:59:59"</code>
<code>select * from table where DATE_FORMAT(date_field , '%Y%m%d') ="2016-10-28"</code>
Wenn die Datumsformate in der Datenbank gleich sind, verwenden Sie die Substr-Funktion von MySQL, um das Datum abzufangen und es dann zu vergleichen
Die Frage des Posters lautet eigentlich:
Fragen Sie die Daten eines bestimmten Tages (z. B. 28. Oktober 2016) basierend auf dem Zeitfeld ab:
<code><?php $min = strtotime('2016-10-28'); $max = strtotime('2016-10-29'); echo "select * from t where time >= $min and time < $max"; // 输出 select * from t where time >= 1477584000 and time < 1477670400</code>
Wenn das Zeitfeld time keinen Zeitstempel, sondern Daten im Datumsformat ('YmdHis') speichert, können Sie Folgendes tun:
<code>select * from t where time >= 20161028000000 and time < 20161029000000</code>