Ich muss die Anzahl der Tage innerhalb einiger Daten auf MySQL ermitteln.
Beispielsweise:
- Eincheckdatum ist
12-04-2010
- Überprüfe das Datum
15-04-2010
Der Tagesunterschied wäre 3
Was ist mit der DATEDIFF- Funktion?
Zitieren der Handbuchseite:
DATEDIFF () gibt expr1 - expr2 zurück, ausgedrückt als Wert in Tagen von einem Datum zum anderen. Ausdruck1 und Ausdruck2 sind Datums- oder Datums- und Uhrzeitausdrücke. Bei der Berechnung werden nur die Datumsteile der Werte verwendet
In Ihrem Fall würden Sie verwenden:
mysql> select datediff('2010-04-15', '2010-04-12');
+--------------------------------------+
| datediff('2010-04-15', '2010-04-12') |
+--------------------------------------+
| 3 |
+--------------------------------------+
1 row in set (0,00 sec)
Beachten Sie jedoch, dass die Daten so geschrieben sein YYYY-MM-DD
sollten und nicht so, DD-MM-YYYY
wie Sie sie gepostet haben.
datediff()
Methode, da es sonst einen negativen Wert zurückgibt.Hinweis: Wenn Sie VOLLSTÄNDIGE 24-Stunden- Tage zwischen zwei Daten zählen möchten, kann dateiff falsche Werte für Sie zurückgeben.
In der Dokumentation heißt es:
was in ... endet
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
gibt 1 statt der erwarteten 0 zurück.
Die Lösung verwendet
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(beachten Sie die entgegengesetzte Reihenfolge der Argumente im Vergleich zu datiert).Einige Beispiele:
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
gibt 0 zurückselect timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
gibt 1 zurückselect timestampdiff(DAY, '2016-04-13 11:00:00', now());
Gibt zurück, wie viele volle 24-Stunden-Tage seit dem 13.04.2016 um 11:00:00 Uhr bis jetzt vergangen sind .Ich hoffe, es wird jemandem helfen, denn zunächst ist nicht klar, warum datiertiff Werte zurückgibt, die unerwartet oder falsch zu sein scheinen.
quelle
datediff()
und umgedreht werdentimestampdiff()
.Verwenden Sie die
DATEDIFF()
Funktion.Beispiel aus der Dokumentation:
quelle
Ich bevorzuge TIMESTAMPDIFF, da Sie das Gerät bei Bedarf problemlos wechseln können.
quelle
Tage zwischen aktuellem Datum und Zieldatum abrufen
Ausgabe
Tage
quelle
Ausgabe::
hoffe es hilft jemandem in Zukunft
quelle