2012-07-19 3 views
0

MySQL에서 TIMEDIFF와 같은 SQLite에서 hase efect라는 함수를 호출하려고합니다.sqlite - MySQL에서와 같이 TIMEDIFF 만들기

select strftime('%s','2012-01-01 12:00:00') - strftime('%s','2004-01-01 02:34:56') 

그러나 이것은 초 단지 번호 :

나는이했다. 그럼 어떻게하면 %Y-%m-%d %H:%M:%S 같은 %H:%M:%S 시간, 분 및 초 차이, 그리고 더 큰 다음 24 시간 때 %d 012와 함께 만들 수 있습니다 얼마나 많은 dais 그것은 등등에 %Y%m 함께 표시됩니다.

답변

4

%Y-%m-%d ...으로 시간 차이를 표시 할 수 없으며 최소한 날짜 형식이 아닙니다. 하루 차이를 어떻게 표현합니까? (0000-00-00 ...은 유효한 날짜가 아닙니다). 또한 한 달은 무엇이 될까요? 30 일? 31 일? 23423432 일?

차이를 초로 유지하고 제시 할 때 필요에 따라 변경하십시오.

sqlite> select datetime(strftime('%s','2012-01-01 12:00:00') 
       - strftime('%s','2004-01-01 02:34:56') - 62167305600, 'unixepoch'); 
0007-12-31 09:25:04 

나는 OP에 의해 downvote이 정당화되지 않은 느낌이 경우에도, 나 자신을 멈출 수 없다 : 한편

, 당신은 정말 당신이 요청으로 수행하려는 경우, 여기 하나의 방법입니다 왜 내가 위에 언급 한 것이 아주 좋은 옵션이 아닌지 분명히 설명하는 이유는 시간 차이가 1 일 미만일 때 "잘못된"결과를 반환하기 때문입니다. 이유는 위에 쓴 것에 암시되어 있습니다 : 0000-00-00 ...과 같은 날짜가 없으므로 대신 datetime 반환 된 값은 음수 지역입니다. -001-12-31 ...

여기에 438:53:45을 얻는 방법이 있습니다. 하지만 매우 복잡입니다 :

earlier date: d1 
later date: d2 

select 
    cast(
     (strftime('%s', d2) - strftime('%s', d1))/86400 * 24 
      + cast(strftime("%H", time(strftime('%s', d2) 
        - strftime('%s', d1), 'unixepoch')) 
       as int) 
    as text) 
    || ":" 
    || substr(time(strftime('%s', d2) - strftime('%s', d1), 'unixepoch'), 4); 

예 :

이 좋지 않다
d1 = '2004-01-01 02:34:56' 
d2 = '2012-01-01 12:00:00' 

sqlite> select cast((strftime('%s','2012-01-01 12:00:00') - strftime('%s','2004-01-01 02:34:56'))/86400 *24 + cast(strftime("%H", time(strftime('%s','2012-01-01 12:00:00') - strftime('%s','2004-01-01 02:34:56'), 'unixepoch')) as int) as text) 
    || ":" 
    || substr(time(strftime('%s','2012-01-01 12:00:00') - strftime('%s','2004-01-01 02:34:56'), 'unixepoch'), 4); 
70137:25:04 
+1

'선택 날짜 (의 strftime ('% S ','2004-01-01 12시 0분 0초 ') - strftime ('% s', '2004-01-01 02:34:56') - 62167305600, 'unixepoch');는'-001-12-31 09 : 25 : 04'을 반환합니다. 그러나 MySQL의'timediff (now(), '2012-07-01 12:00:00')'->''438 : 53 : 45'처럼 출력을 얻으려면 어떻게해야합니까? – microo8

+0

확신하기 위해, 당신은 downvote하지 않았습니까? –

+0

예 제가 downvoted있다, 대답은 정확하지 않습니다. – microo8

관련 문제