MySQL에서 며칠 안에 포함 된 일수를 가져와야합니다.
예를 들면 다음과 같습니다.
- 체크인 날짜는
12-04-2010
- 체크 아웃 날짜
15-04-2010
일 차이는 3입니다
답변
[정보] 무엇 DATEDIFF의 기능?
매뉴얼 페이지 인용 :
DATEDIFF ()는 expr1 – expr2를 한 날짜에서 다른 날짜로 일 단위로 값으로 표시합니다. expr1 및 expr2는 날짜 또는 날짜 및 시간 표현식입니다. 값의 날짜 부분 만 계산에 사용됩니다.
귀하의 경우에는 다음을 사용하십시오.
mysql> select datediff('2010-04-15', '2010-04-12');
+--------------------------------------+
| datediff('2010-04-15', '2010-04-12') |
+--------------------------------------+
| 3 |
+--------------------------------------+
1 row in set (0,00 sec)
그러나 날짜는 님이 YYYY-MM-DD
아닌 DD-MM-YYYY
게시 로 기록해야합니다 .
답변
2 일 사이에 24 시간 을 계산하려면 datediff가 잘못된 값을 반환 할 수 있습니다.
설명서에 따르면 :
값의 날짜 부분 만 계산에 사용됩니다.
결과
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
예상되는 0 대신 1을 반환합니다.
솔루션이 사용 중입니다 select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(datediff와 반대되는 인수 순서에 유의하십시오).
몇 가지 예 :
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
0을 반환select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
1을 반환select timestampdiff(DAY, '2016-04-13 11:00:00', now());
지금까지 2016-04-13 11:00:00 이후에 24 시간이 지난 전체 횟수를 반환합니다 .
datediff가 예기치 않은 또는 잘못된 것으로 보이는 값을 반환하는 이유가 명확하지 않기 때문에 누군가에게 도움이되기를 바랍니다.
답변
답변
필요한 경우 쉽게 장치를 변경할 수 있기 때문에 TIMESTAMPDIFF를 선호 합니다.
답변
현재 날짜와 대상 날짜 사이의 날짜 가져 오기
SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;
산출
일
335
답변
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM membership_dates md
산출::
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
그것이 미래에 누군가를 돕기를 바랍니다