2016-12-17 77 views
1

我玩BigQuery中的一些表,我收到此錯誤:的BigQuery標準SQL錯誤,時間戳無效

不能返回-62169990264000000微秒相對於Unix紀元無效時間戳值。 有效時間戳值的範圍是[0001-01-1 00:00:00,9999-12-31 23:59:59.999999]

在legacysql中進行查詢並對其進行排序,顯示爲0001-11 -29 22時15分36秒UTC

它是如何在幾微秒得到改變?

這是查詢:

#standardSQL 
SELECT 
    birthdate 
FROM 
    X 
WHERE 
    birthdate IS NOT NULL 
ORDER BY 
    birthdate ASC 
+0

顯示查詢產生錯誤 –

+0

改變的細節,現在增加 –

回答

1

年0001的1月1日(以標準SQL的最小可能時間戳值)的午夜是相對於UNIX時代,這是大於微秒-62135596800000000 - 621699902.64億。對於具有該時間戳值的傳統SQL行爲,我沒有很好的解釋,但是您可以閱讀關於在this item on the issue tracker中使用標準SQL處理它的一些建議。我們計劃在將來的移動指南中添加一些關於此時間戳行爲的內容。

1

** ** strong text確認的是,在大量查詢傳統的SQL

SELECT USEC_TO_TIMESTAMP(-62169990264000000) 

在大量查詢標準SQL

SELECT TIMESTAMP_MICROS(-62169990264000000) 
產生0001-11-29 22時15分36秒UTC時間戳

產生錯誤: TIMESTAMP值超出允許範圍:從0001-01-01 00:00:00.000000 + 00到9999-12-31 23:59:59.999999 + 00。

How does it get transformed in microseconds?

TIMESTAMP
你可以描述TIMESTAMP數據類型或者UNIX時間戳或日曆日期時間。 BigQuery將TIMESTAMP數據內部存儲爲UNIX時間戳,其中microsecond precision

查看更多有關TIMESTAMP