두 날짜 간의 시간 차이를 분 단위로 계산
MySQL 데이터베이스에 타임 스탬프 시간 필드가 있으며 이 시간 필드는DATE
내 콩에 데이터 입력.현재 타임스탬프와 데이터베이스에 저장된 타임스탬프의 차이가 20분 이상인 모든 레코드를 가져올 수 있는 쿼리를 만듭니다.
어떻게 해야 하죠?
내가 원하는 것은:
SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes
이를 위한 MySQL 함수 또는 SQL에서 수행할 수 있는 방법이 있습니까?
MySql 버전이 5.6보다 높은 경우 TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)를 사용할 수 있습니다.
select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);
MySql 버전 > = 5.6
오늘과 데이터베이스 날짜는 아래 코드를 사용하고 있습니다.
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
매뉴얼에 따르면 첫 번째 인수는 다음 중 하나입니다.
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
이것을 사용해 보세요.
select * from MyTab T where date_add(T.runTime, INTERVAL 20 MINUTE) < NOW()
메모: MySQL DateTime 형식을 사용하는 경우 이 기능이 작동합니다.Unix Timestamp(integer)를 사용하고 있는 경우는, 한층 더 간단하게 실시할 수 있습니다.
select * from MyTab T where UNIX_TIMESTAMP() - T.runTime > 20*60
UNIX_TIMESTamp() 함수는 현재 UNIX 타임스탬프를 반환합니다.
다음과 같이 시험해 보십시오.
SELECT * FROM MyTab T WHERE CURRENT_TIMESTAMP() > T.runTime + INTERVAL 20 MINUTE;
CURRENT_TIMESTamp()는 함수이며 현재 날짜와 시간을 반환합니다.이 함수는 MySQL 4.0부터 동작합니다.
5.6 이전 버전의 MySql을 사용하는 경우 TIMESTAMPDIFF가 없습니다.그래서 이걸 위해 MySql 함수를 직접 썼어요%i 또는 %m을 분 동안, %h을(를) 시간 동안 액세스합니다.연장할 수 있어요.
사용 예:
SELECT MYTSDIFF('2001-01-01 10:44:32', '2001-01-01 09:50:00', '%h')
이제 기능이 시작됩니다.즐길 수 있다:
DROP FUNCTION IF EXISTS MYTSDIFF;
DELIMITER $$
CREATE FUNCTION `MYTSDIFF`( date1 timestamp, date2 timestamp, fmt varchar(20))
returns varchar(20) DETERMINISTIC
BEGIN
declare secs smallint(2);
declare mins smallint(2);
declare hours int;
declare total real default 0;
declare str_total varchar(20);
select cast( time_format( timediff(date1, date2), '%s') as signed) into secs;
select cast( time_format( timediff(date1, date2), '%i') as signed) into mins;
select cast( time_format( timediff(date1, date2), '%H') as signed) into hours;
set total = hours * 3600 + mins * 60 + secs;
set fmt = LOWER( fmt);
if fmt = '%m' or fmt = '%i' then
set total = total / 60;
elseif fmt = '%h' then
set total = total / 3600;
else
/* Do nothing, %s is the default: */
set total = total + 0;
end if;
select cast( total as char(20)) into str_total;
return str_total;
END$$
DELIMITER ;
언급URL : https://stackoverflow.com/questions/7636599/calculating-time-difference-between-2-dates-in-minutes
'programing' 카테고리의 다른 글
JSON.stringify 출력을 div에 예쁘게 인쇄 (0) | 2023.02.02 |
---|---|
크로스 플랫폼 개발에는 .NET/Mono 또는 Java 중 어느 쪽을 선택하는 것이 좋을까요? (0) | 2023.02.02 |
Java에서 toString()을 올바르게 덮어쓰려면 어떻게 해야 합니까? (0) | 2023.02.02 |
해석 오류:인접한 JSX 요소는 둘러싸인 태그로 감싸야 합니다. (0) | 2023.02.02 |
테이블을 잠그지 않고 테이블을 변경하시겠습니까? (0) | 2023.02.02 |