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

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


답변

DATEDIFF()기능을 사용하십시오 .

설명서의 예 :

SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
    -> 1


답변

필요한 경우 쉽게 장치를 변경할 수 있기 때문에 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

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


답변