MySQL 시간의 뺄셈은 다른 기계에서 일치하지 않습니다
-
21-08-2019 - |
문제
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;
제휴하지 않습니다 StackOverflow