문제

MySQL 쿼리가 다음과 같이 구성되어 있습니다.

SELECT time(c.start_time),
       time(c.end_time),
       time(c.end_time) - time(c.start_time) as 'opening_hours' 
FROM my_shop c;

시작 및 종료 시간의 데이터는 각각 1970-01-01 07:00:00 및 1970-01-01 19:00:00입니다.

내 로컬 컴퓨터 에서이 쿼리는 다음을 반환합니다.

| 07:00:00 | 19:00:00 | 12 |

그러나 원격 기계 (생산)에서는 반환 중입니다.

| 07:00:00 | 19:00:00 | 120000 |

왜 이런 일이 발생하는지에 대한 아이디어와 문제를 해결하는 방법에 대한 아이디어가 있습니까?

두 데이터 세트 모두 동일하며 내 지식이 가장 좋습니다. 두 MySQL 설치는 동일합니다.

모든 도움은 대단히 감사합니다.

업데이트:

MySQL의 버전은 5.0.27-Community-NT 대 5.0.51B-Community-NT입니다. 이것이 아마도 그 이유 일 것입니다.

DJT는 Bill의 솔루션이 몇 분을 고려하지 않는다는 점에서 좋은 점을 제기했습니다. 이 DJT의 솔루션은 내가 필요한 것이 아닙니다.

따라서 질문이 다음과 같은 분을 포함하여 두 번 빼는 방법으로 변형 된 것 같습니다.

1970-01-01 19:00:00 - 1970-01-01 07:00:00 = 12 
1970-01-01 19:00:00 - 1970-01-01 07:30:00 = 11.5
1970-01-01 19:00:00 - 1970-01-01 07:45:00 = 11.25

등.

도움이 되었습니까?

해결책

나는 이런 식으로 할 것이다 :

SELECT TIME(c.start_time),
       TIME(c.end_time),
       EXTRACT(HOUR FROM TIMEDIFF(TIME(c.end_time), TIME(c.start_time)))
         AS 'opening_hours' 
FROM my_shop c;

다른 팁

일반적으로 다른 출력을 일으키는 동일한 방법은 다른 서버 구성 또는 버전이라는 인상을줍니다. 실제로 도움을 줄 수는 없지만 대신 쿼리에서 아래 메소드를 시도하는 것이 좋습니다.

SELECT TIME(c.start_time),
       TIME(c.end_time),
       TIMEDIFF(TIME(c.end_time), TIME(c.start_time)) as 'opening_hours'

FROM my_shop c;

이렇게하면 영업 시간, 몇 분 및 초의 형식 타임 스탬프가 제공됩니다.

이것보다 더 나은 솔루션이 있습니까?

SELECT EXTRACT(HOUR FROM TIMEDIFF(TIME(c.end_time), TIME(c.start_time))) 
+ ((EXTRACT(MINUTE FROM TIMEDIFF(TIME(c.end_time), TIME(c.start_time))))/60)
FROM my_shop c;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top