Respostas:
E a função DATEDIFF ?
Citando a página do manual:
DATEDIFF () retorna expr1 - expr2 expresso como um valor em dias de uma data para a outra. expr1 e expr2 são expressões de data ou data e hora. Somente as partes da data dos valores são usadas no cálculo
No seu caso, você usaria:
mysql> select datediff('2010-04-15', '2010-04-12');
+--------------------------------------+
| datediff('2010-04-15', '2010-04-12') |
+--------------------------------------+
| 3 |
+--------------------------------------+
1 row in set (0,00 sec)
Mas observe que as datas devem ser escritas como YYYY-MM-DD
e não DD-MM-YYYY
como você postou.
datediff()
método, caso contrário, ele retornará valor negativo.
Observe que se você quiser contar 24 horas por dia, entre 2 datas, datediff pode retornar valores incorretos para você.
Como a documentação declara:
Somente as partes da data dos valores são usadas no cálculo.
o que resulta em
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
retorna 1 em vez do esperado 0.
A solução está sendo usada select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(observe a ordem oposta dos argumentos em comparação com datediff).
Alguns exemplos:
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
retorna 0select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
retorna 1select timestampdiff(DAY, '2016-04-13 11:00:00', now());
retorna quantos dias completos de 24 horas se passaram desde 13-04-2016 11:00:00 até agora .Espero que ajude alguém, porque, a princípio, não é muito óbvio por que datatediff retorna valores que parecem inesperados ou errados.
datediff()
e timestampdiff()
.
Use o DATEDIFF()
função
Exemplo da documentação:
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
Prefiro TIMESTAMPDIFF porque você pode facilmente mudar a unidade, se necessário.
Obter dias entre a data atual e a data de destino
SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;
resultado
335
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM membership_dates md
resultado::
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
espero que ajude alguém no futuro