Réponses:
Qu'en est-il de la fonction DATEDIFF ?
Citant la page du manuel:
DATEDIFF () renvoie expr1 - expr2 exprimée sous forme de valeur en jours d'une date à l'autre. expr1 et expr2 sont des expressions de date ou de date et d'heure. Seules les parties de date des valeurs sont utilisées dans le calcul
Dans votre cas, vous utiliseriez:
mysql> select datediff('2010-04-15', '2010-04-12');
+--------------------------------------+
| datediff('2010-04-15', '2010-04-12') |
+--------------------------------------+
| 3 |
+--------------------------------------+
1 row in set (0,00 sec)
Mais notez que les dates doivent être écrites comme YYYY-MM-DD
et non DD-MM-YYYY
comme vous l'avez publié.
datediff()
méthode, sinon il renverra une valeur négative.
Notez que si vous voulez compter PLEIN 24 jours entre 2 dates, dateiff peut renvoyer des valeurs erronées pour vous.
Comme l'indique la documentation:
Seules les parties de date des valeurs sont utilisées dans le calcul.
ce qui se traduit par
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
renvoie 1 au lieu de 0 attendu.
La solution utilise select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(notez l'ordre opposé des arguments par rapport à daté).
Quelques exemples:
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
renvoie 0select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
renvoie 1select timestampdiff(DAY, '2016-04-13 11:00:00', now());
renvoie le nombre de jours complets de 24h écoulés depuis le 13/04/2016 11:00:00 jusqu'à présent .J'espère que cela aidera quelqu'un, car au début, il n'est pas très évident de savoir pourquoi Datatiff renvoie des valeurs qui semblent inattendues ou erronées.
datediff()
et timestampdiff()
.
Utilisez la DATEDIFF()
fonction.
Exemple tiré de la documentation:
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
Je préfère TIMESTAMPDIFF car vous pouvez facilement changer l'unité si besoin est.
Obtenir les jours entre la date actuelle et la date de destination
SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;
production
335
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM membership_dates md
production::
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
j'espère que cela aidera quelqu'un à l'avenir