Antworten:
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:
Bei der Berechnung werden nur die Datumsteile der Werte verwendet.
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.
datediff()
und umgedreht werden timestampdiff()
.
Verwenden Sie die DATEDIFF()
Funktion.
Beispiel aus der Dokumentation:
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
Ich bevorzuge TIMESTAMPDIFF, da Sie das Gerät bei Bedarf problemlos wechseln können.
Tage zwischen aktuellem Datum und Zieldatum abrufen
SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;
Ausgabe
335
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM membership_dates md
Ausgabe::
id entity_id start_date end_date days
1 1236 2018-01-16 00:00:00 2018-08-31 00:00:00 227
2 2876 2015-06-26 00:00:00 2019-06-30 00:00:00 1465
3 3880 1990-06-05 00:00:00 2018-07-04 00:00:00 10256
4 3882 1993-07-05 00:00:00 2018-07-04 00:00:00 9130
hoffe es hilft jemandem in Zukunft