الطرح مرات الخلية غير متناسقة على أجهزة مختلفة

StackOverflow https://stackoverflow.com/questions/361455

  •  21-08-2019
  •  | 
  •  

سؤال

وعندي استفسار الخلية منظم كما يلي:

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 |

وأي أفكار لماذا هذا قد يحدث وكيفية اصلاحها؟

وكلتا المجموعتين من البيانات متطابقة وأيضا على حد علمي كل من الخلية المنشآت متطابقة.

وهو محل تقدير كبير أي مساعدة.

تحديث:

ويبدو أن إصدارات الخلية هي مختلفة قليلا: 5.0.27-المجتمع-الشمالي مقابل 5.0.51b-المجتمع-الإقليم الشمالي. هذا هو على الارجح السبب.

لقد أثار DJT نقطة جيدة في حل بيل لا يأخذ بعين الاعتبار دقيقة. وكذلك حل هذه 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