البرمجة

تحويل قيمة INT64 إلى TIMESTAMP في BigQuery

لتحويل القيمة الزمنية من نوع INT64 (epoch) إلى TIMESTAMP في BigQuery، يمكنك استخدام وظيفة TIMESTAMP_SECONDS(). يمكنك تطبيق هذه الوظيفة على حقل visitStartTime في الجدول الرئيسي لتحويل القيمة إلى TIMESTAMP، بحيث يمكنك استخدامها في العملية JOIN مع الجدول الثاني الذي يحتوي على الTIMESTAMPs مباشرة.

وبناءً على ذلك، يمكن تعديل الاستعلام كالتالي:

sql
SELECT * FROM main_table h INNER JOIN test.delay_pairs d ON TIMESTAMP_SECONDS(d.interval_start_time_utc) < TIMESTAMP_SECONDS(h.visitStartTime) AND TIMESTAMP_SECONDS(h.visitStartTime) < TIMESTAMP_SECONDS(d.interval_end_time_utc)

بهذا التعديل، يتم تحويل قيمة visitStartTime من نوع INT64 إلى TIMESTAMP قبل المقارنة مع interval_start_time_utc و interval_end_time_utc.

المزيد من المعلومات

في لغة الاستعلام SQL القياسية في BigQuery، يجب أن تتم مطابقة أنواع البيانات عند استخدام العوامل المنطقية مثل < بين الحقول. في الاستعلام الذي قدمته، h.visitStartTime هو من نوع INT64 (epoch) بينما d.interval_start_time_utc و d.interval_end_time_utc هما من نوع TIMESTAMP. لذا، تحتاج إلى تحويل قيمة h.visitStartTime إلى TIMESTAMP ليتمكن BigQuery من المقارنة بشكل صحيح.

يمكنك استخدام وظيفة TIMESTAMP_SECONDS() لتحويل قيمة INT64 (epoch) إلى TIMESTAMP. تقوم هذه الوظيفة بتحويل العدد الصحيح (الثواني من epoch) إلى TIMESTAMP. لذا، يمكنك تعديل الجزء الذي يتضمن h.visitStartTime في الاستعلام ليصبح كالتالي:

sql
TIMESTAMP_SECONDS(h.visitStartTime)

بهذا التعديل، يمكنك استخدام TIMESTAMP_SECONDS() لتحويل قيمة h.visitStartTime إلى TIMESTAMP قبل المقارنة بين الجدولين.

زر الذهاب إلى الأعلى