Je dois connaître le nombre de jours contenus dans quelques dates sur MySQL.
Par exemple:
12-04-2010
15-04-2010
La différence de jour serait de 3
Qu'en est-il de la fonction DATIFF?
Citant la page du manuel:
DATEDIFF () renvoie expr1 - expr2 sous forme de valeur en jours d'une date à l'autre. expr1 et expr2 sont des expressions de date ou de date et 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 pas DD-MM-YYYY
comme vous avez posté.
Notez que si vous voulez compter PLEIN 24h entre 2 dates, indique que datiff peut vous renvoyer des valeurs erronées.
Comme le dit la documentation:
Seules les parties de date des valeurs sont utilisées dans le calcul.
qui se traduit par
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
renvoie 1 au lieu du 0 attendu.
La solution utilise select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(notez l'ordre des arguments opposé par rapport à datiff).
Quelques exemples:
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
retourneselect timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
retourne 1select timestampdiff(DAY, '2016-04-13 11:00:00', now());
retourne combien de jours complets ont passé depuis le 2016-04-13 11:00:00 jusqu'à présent.J'espère que cela aidera quelqu'un, car au début, il n'est pas évident de comprendre pourquoi de Diff renvoie des valeurs qui semblent inattendues ou erronées.
Utilisez la fonction DATEDIFF()
.
Exemple de documentation:
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
Je préfère TIMESTAMPDIFF parce que 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;
sortie
335
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM membership_dates md
sortie::
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 ça aidera quelqu'un à l'avenir