sourcecode

MySQL에서 두 날짜의 일수를 구하는 방법은 무엇입니까?

copyscript 2022. 11. 16. 21:22
반응형

MySQL에서 두 날짜의 일수를 구하는 방법은 무엇입니까?

MySQL에서 며칠 안에 포함된 일수를 알아야 합니다.

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

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

일차는 3일입니다.

DATIFF 기능은 어떻습니까?

매뉴얼 페이지 인용:

DATIFF()는 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당신이 올린 것처럼요

두 날짜 사이에 24시간 동안 전체 날짜를 계산하려면 dateiff에서 잘못된 값을 반환할 수 있습니다.

설명서에 기재되어 있는 바와 같이:

값의 날짜 부분만 계산에 사용됩니다.

결과적으로

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');(dateiff와 비교한 인수 순서를 주의해 주세요).

몇 가지 예:

  • 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시간이 경과한 횟수를 반환합니다.

그것이 누군가에게 도움이 되기를 바란다. 왜냐하면 처음에는 왜 dateiff가 예상치 못하거나 잘못된 값을 반환하는지는 그다지 명확하지 않기 때문이다.

함수를 사용합니다.

문서의 예:

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

반올림된 일수보다 더 정확한 값을 원하는 경우:

select timestampdiff(minute, min(date_col), max(date_col))/1440 from table
    TIMESTAMPDIFF(DAY,STR_TO_DATE(date_format('2018-01-01', '%d-%m-%YYYY'),'%d-%m-%YYYY'), '2020-01-01') TOTAL_DAYS

합계_일수: 730일

언급URL : https://stackoverflow.com/questions/2490173/how-to-get-the-number-of-days-of-difference-between-two-dates-on-mysql

반응형