[SQL] MySQL은 두 날짜 사이의 차이
SQLMySQL은 두 날짜 사이의 차이
어떻게 형식 YYYY-MM-DD hh가에, 두 날짜 사이의 차이를 계산 : MM : SS 초 또는 밀리 초 단위로 결과를 얻을?
해결법
-
==============================
1.
SELECT TIMEDIFF('2007-12-31 10:02:00','2007-12-30 12:01:01'); -- result: 22:00:59, the difference in HH:MM:SS format SELECT TIMESTAMPDIFF(SECOND,'2007-12-30 12:01:01','2007-12-31 10:02:00'); -- result: 79259 the difference in seconds
그래서, 당신은 당신의 목적을 위해 TIMESTAMPDIFF를 사용할 수 있습니다.
-
==============================
2.당신이 DATE 컬럼으로 작업 (또는 날짜 열로 전송할 수 있습니다) 경우, DATEDIFF () 다음 곱하기 24 시간, 60 분, 시도 60 초 (DATEDIFF 반환 일 diff를하기 때문에). MySQL의에서 :
당신이 DATE 컬럼으로 작업 (또는 날짜 열로 전송할 수 있습니다) 경우, DATEDIFF () 다음 곱하기 24 시간, 60 분, 시도 60 초 (DATEDIFF 반환 일 diff를하기 때문에). MySQL의에서 :
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
예를 들어 :
mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30 00:00:00') * 24*60*60
-
==============================
3.DATEDIFF를 사용하여 일의 날짜 차이를 가져옵니다
DATEDIFF를 사용하여 일의 날짜 차이를 가져옵니다
SELECT DATEDIFF('2010-10-08 18:23:13', '2010-09-21 21:40:36') AS days; +------+ | days | +------+ | 17 | +------+
또는
아래의 링크를 참조하십시오 일이 타임 스탬프 사이의 MySQL의 차이?
-
==============================
4.
SELECT TIMESTAMPDIFF(HOUR,NOW(),'2013-05-15 10:23:23') calculates difference in hour.(for days--> you have to define day replacing hour SELECT DATEDIFF('2012-2-2','2012-2-1') SELECT TO_DAYS ('2012-2-2')-TO_DAYS('2012-2-1')
-
==============================
5.
select unix_timestamp('2007-12-30 00:00:00') - unix_timestamp('2007-11-30 00:00:00');
-
==============================
6.
SELECT TIMESTAMPDIFF(SECOND,'2018-01-19 14:17:15','2018-01-20 14:17:15');
두 번째 접근 방식
SELECT (DATEDIFF ( '1993년 2월 20일', '1993년 2월 19일') * (24 * 60 * 60)) AS '초';
CURRENT_TIME() --this will return current Date DATEDIFF('','') --this function will return DAYS and in 1 day there are 24hh 60mm 60sec
-
==============================
7.또는, TIMEDIFF 기능을 사용할 수 있습니다
또는, TIMEDIFF 기능을 사용할 수 있습니다
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00', '2000:01:01 00:00:00.000001'); '-00:00:00.000001' mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001' , '2008-12-30 01:01:01.000002'); '46:58:57.999999'
-
==============================
8.이 함수는 날짜 형식 YYYY-MM-DD 두 날짜 및 프로그램을 차이 걸린다. 당신이 필요로하는 아래의 코드를 실행하고 함수를 사용하는 것입니다. 실행 후에는 다음과 같이 사용할 수 있습니다
이 함수는 날짜 형식 YYYY-MM-DD 두 날짜 및 프로그램을 차이 걸린다. 당신이 필요로하는 아래의 코드를 실행하고 함수를 사용하는 것입니다. 실행 후에는 다음과 같이 사용할 수 있습니다
SELECT datedifference(date1, date2) FROM .... . . . . DELIMITER $$ CREATE FUNCTION datedifference(date1 DATE, date2 DATE) RETURNS DATE NO SQL BEGIN DECLARE dif DATE; IF DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2)))) < 0 THEN SET dif=DATE_FORMAT( CONCAT( PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))DIV 12 , '-', PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))% 12 , '-', DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(DATE_SUB(date1, INTERVAL 1 MONTH)), '-', DAY(date2))))), '%Y-%m-%d'); ELSEIF DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2)))) < DAY(LAST_DAY(DATE_SUB(date1, INTERVAL 1 MONTH))) THEN SET dif=DATE_FORMAT( CONCAT( PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))DIV 12 , '-', PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))% 12 , '-', DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2))))), '%Y-%m-%d'); ELSE SET dif=DATE_FORMAT( CONCAT( PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))DIV 12 , '-', PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))% 12 , '-', DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2))))), '%Y-%m-%d'); END IF; RETURN dif; END $$ DELIMITER;
-
==============================
9.
select TO_CHAR(TRUNC(SYSDATE)+(to_date( '31-MAY-2012 12:25', 'DD-MON-YYYY HH24:MI') - to_date( '31-MAY-2012 10:37', 'DD-MON-YYYY HH24:MI')), 'HH24:MI:SS') from dual
OK 그것은 영업 이익은 무엇을 요구 꽤 아니지만, 내가하고 싶었던거야 :-)
-
==============================
10.YYYY MM에서 두 날짜 사이에이 코드 계산의 차이는 형식을 위해 dd.
YYYY MM에서 두 날짜 사이에이 코드 계산의 차이는 형식을 위해 dd.
declare @StartDate datetime declare @EndDate datetime declare @years int declare @months int declare @days int --NOTE: date of birth must be smaller than As on date, --else it could produce wrong results set @StartDate = '2013-12-30' --birthdate set @EndDate = Getdate() --current datetime --calculate years select @years = datediff(year,@StartDate,@EndDate) --calculate months if it's value is negative then it --indicates after __ months; __ years will be complete --To resolve this, we have taken a flag @MonthOverflow... declare @monthOverflow int select @monthOverflow = case when datediff(month,@StartDate,@EndDate) - ( datediff(year,@StartDate,@EndDate) * 12) <0 then -1 else 1 end --decrease year by 1 if months are Overflowed select @Years = case when @monthOverflow < 0 then @years-1 else @years end select @months = datediff(month,@StartDate,@EndDate) - (@years * 12) --as we do for month overflow criteria for days and hours --& minutes logic will followed same way declare @LastdayOfMonth int select @LastdayOfMonth = datepart(d,DATEADD (s,-1,DATEADD(mm, DATEDIFF(m,0,@EndDate)+1,0))) select @days = case when @monthOverflow<0 and DAY(@StartDate)> DAY(@EndDate) then @LastdayOfMonth + (datepart(d,@EndDate) - datepart(d,@StartDate) ) - 1 else datepart(d,@EndDate) - datepart(d,@StartDate) end select @Months=case when @days < 0 or DAY(@StartDate)> DAY(@EndDate) then @Months-1 else @Months end Declare @lastdayAsOnDate int; set @lastdayAsOnDate = datepart(d,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@EndDate),0))); Declare @lastdayBirthdate int; set @lastdayBirthdate = datepart(d,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@StartDate)+1,0))); if (@Days < 0) ( select @Days = case when( @lastdayBirthdate > @lastdayAsOnDate) then @lastdayBirthdate + @Days else @lastdayAsOnDate + @Days end ) print convert(varchar,@years) + ' year(s), ' + convert(varchar,@months) + ' month(s), ' + convert(varchar,@days) + ' day(s) '
-
==============================
11.당신이 코드를 구현할 수있는 문자열로 텍스트 필드에 저장된 날짜를 한 경우는 과거 일 수 주일, 한 달 분류 해 목록을 가져옵니다 :
당신이 코드를 구현할 수있는 문자열로 텍스트 필드에 저장된 날짜를 한 경우는 과거 일 수 주일, 한 달 분류 해 목록을 가져옵니다 :
SELECT * FROM `table` WHERE STR_TO_DATE(mydate, '%d/%m/%Y') < CURDATE() - INTERVAL 30 DAY AND STR_TO_DATE(date, '%d/%m/%Y') > CURDATE() - INTERVAL 60 DAY //This is for a month SELECT * FROM `table` WHERE STR_TO_DATE(mydate, '%d/%m/%Y') < CURDATE() - INTERVAL 7 DAY AND STR_TO_DATE(date, '%d/%m/%Y') > CURDATE() - INTERVAL 14 DAY //This is for a week
% D % m의 %는 Y는 날짜 형식입니다
이 표시 동일한 개념으로 마지막 주에 기록 될 수 있도록 지난 14 일부터 지난 7 일 위부터 아래의 월 또는 년입니다 :이 쿼리는이 같은 사용자가 설정 한 일 간의 기록을 표시합니다. 무엇이든 값은 같은 날짜 아래에 제공하고 있습니다 : 7 일에서 다른 값이 이중으로 십사일 될 수 있도록 아래에. 우리가 여기서 말하고있는 것은 최근 7 일 최근 14 일에서 위 아래의 모든 기록을 얻을. 이것은 당신이 한 달 동안도 매년 30 ~ 60 일 값을 변경할 수 있습니다 일주일 기록이다.
당신은 누군가를 도움이되기를 바랍니다 감사합니다.
-
==============================
12.당신은 단순히이 작업을 수행 할 것입니다 :
당신은 단순히이 작업을 수행 할 것입니다 :
SELECT (end_time - start_time) FROM t; -- return in Millisecond SELECT (end_time - start_time)/1000 FROM t; -- return in Second
-
==============================
13.왜 그냥
왜 그냥
테이블 - 선택 합 (DATE2 날짜 1)
날짜 1과 날짜 2가 날짜입니다
from https://stackoverflow.com/questions/4759248/difference-between-two-dates-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 차이를하는 SQL JOIN (0) | 2020.03.25 |
---|---|
[SQL] 내부의 'OR'는 조건이 나쁜 생각 JOIN 데? (0) | 2020.03.25 |
[SQL] 쉼표로 구분 한 값과 복수의 열 [중복] (0) | 2020.03.25 |
[SQL] SQLite는 테이블에서 삭제 열 (0) | 2020.03.25 |
[SQL] MySQL은 "그룹으로"와 "주문" (0) | 2020.03.25 |