2015-06-06 16 views
8
  1. tôi đã cập nhật được lưu trữ trong Epoch Time và tôi muốn trích xuất Date từ nó. Tôi đã thử mã dưới đây và tôi nhận được null làm đầu ra.Làm thế nào tôi có thể trích xuất ngày theo thời kỷ nguyên trong BigQuery SQL

    date_add((timestamp(Hp.ASSIGN_TIME)), 1970-01-01,"second") as Extracted_date_Epoch 
    

    định dạng thời gian Ex (1424184621000000)

  2. hơn Một câu hỏi. Các mã dưới đây cho tôi ngày một cách chính xác nhưng không phải ngày làm việc, nó cung cấp cho tất cả các ngày, là nó có thể để có được chỉ là ngày làm việc betweeen hai lần được lưu trữ trong thời gian Epoch?

    INTEGER(((Hp.ASSIGN_TIME - Hp.ARRIVAL_TIME)/1000000)/86400) as Days 
    

Trả lời

13

Để chuyển đổi timestamp-date bạn có thể sử dụng BigQuery date/time functions:

SELECT TIMESTAMP(1424184621000000)  # 2015-02-17 14:50:21 UTC 
SELECT DATE(TIMESTAMP(1424184621000000)) # 2015-02-17 
SELECT DATE(TIMESTAMP('2015-02-17'))  # 2015-02-17 
SELECT INTEGER(TIMESTAMP('2015-02-17')) # 1424131200000000 

Để tính số ngày giữa hai ngày (Ví dụ giữa 6/1/15 đến 6/20/15), bạn có thể làm điều này:

SELECT (DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1) 

Và cuối cùng để tính toán ngày làm việc, bạn có thể sử dụng f ollowing:

SELECT 
    (DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1) 
    -(INTEGER((DATEDIFF(TIMESTAMP('2015-06-20'), TIMESTAMP('2015-06-01')) + 1)/7) * 2) 
    -(CASE WHEN DAYOFWEEK(TIMESTAMP('2015-06-01')) = 1 THEN 1 ELSE 0 END) 
    -(CASE WHEN DAYOFWEEK(TIMESTAMP('2015-06-20')) = 7 THEN 1 ELSE 0 END) 

Đây là tính toán đơn giản trong ngày làm việc khi xem xét Sat và Sun vào cuối tuần và không liên quan đến bất kỳ ngày lễ nào.

+0

Cảm ơn Qorbani rất nhiều. Rực rỡ. Tôi đã phải vật lộn với những ngày làm việc trong vài ngày qua. Làm việc như ma thuật. –

+0

Qorbani tôi rất thích đánh dấu nó là câu trả lời. Tôi không biết làm thế nào, tất cả những gì tôi thấy là trả lời câu hỏi của bạn. Tôi không thấy tùy chọn để bỏ phiếu hoặc thích hoặc đánh dấu tùy chọn đó là câu trả lời. Làm thế nào tôi có thể làm điều đó? –

7

Nếu bạn đang sử dụng phương ngữ standardSQL trong BigQuery, chức năng này thực hiện chuyển đổi thành dấu thời gian có thể đọc được của con người TIMESTAMP_MICROS (1424184621000000) -> 2015-02-17 14:50:21 UTC. Tham khảo: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#timestamp-string

+0

TIMESTAMP_MICROS (visitStartTime * 1000000) hoạt động tốt cho dữ liệu GA, cảm ơn! –

Các vấn đề liên quan