mysql에서 두 날짜의 차이를 얻는 방법은 무엇입니까?


162

MySQL에서 며칠 안에 포함 된 일수를 가져와야합니다.

예를 들면 다음과 같습니다.

  • 체크인 날짜는 12-04-2010
  • 체크 아웃 날짜 15-04-2010

일 차이는 3입니다

답변:


262

[정보] 무엇 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게시 로 기록해야합니다 .


네, 질문을했을 때 날짜 형식을 잊었습니다. p 감사합니다
Audel

4
PS YYYY-MM-DD는 ISO 8601 표준이므로 누구나 사용해야합니다. 매우 실용적입니다.
Ernestas Stankevičius

4
참고 : 첫 번째 인수는 datediff()메서드 의 두 번째 인수보다 커야합니다 . 그렇지 않으면 음수 값이 반환됩니다.
Shashanth

38

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가 예기치 않은 또는 잘못된 것으로 보이는 값을 반환하는 이유가 명확하지 않기 때문에 누군가에게 도움이되기를 바랍니다.


datediff()그리고 사이에 인수가 뒤집힌다는 것이 이상합니다 timestampdiff().
billynoah



5

현재 날짜와 대상 날짜 사이의 날짜 가져 오기

 SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;

산출

 335

2
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

그것이 미래에 누군가를 돕기를 바랍니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.