2017-09-25 112 views
0

我試圖(和失敗)執行的BigQuery以下查詢使用標準SQLTIMESTAMP和標準SQL在谷歌的BigQuery

SELECT 
    user_id 
FROM 
    dataset.table 
WHERE 
    timestamp > TIMESTAMP("2017-09-18 00:00") 

我不斷得到消息

Query Failed 
Error: Invalid timestamp: '2017-09-18 00:00' 

我試過了,絕望,與2017-09-18T00:00或類似傳統SQL timestamp > "2017-09-18 00:00"沒有成功。

感謝您的幫助。

+0

什麼類型是你的'timestamp'列? –

回答

1

我相信一個有效的時間戳的時間部分有小時,分鐘,秒。您的時間戳文字省略秒部分。嘗試包括它:

SELECT 
    user_id 
FROM 
    dataset.table 
WHERE 
    timestamp > TIMESTAMP('2017-09-18 00:00:00') 

您需要在時間戳秒,爲什麼你的當前時間戳是沒有意義的,是BigQuery的內部存儲時間戳作爲新紀元的秒數​​的原因。沒有指定秒數,您的時間戳不能可靠地存儲。

documentation

你可以描述TIMESTAMP數據類型或者UNIX時間戳或日曆日期時間。 BigQuery將TIMESTAMP數據內部存儲爲UNIX時間戳,精度爲微秒。

+0

感謝您的解釋。 –

1

由於documentation of bigquery表明

日期和時間字符串

日期和時間字符串格式爲YYYY-MM-DD HH:MM:SS。支持UTC和 Z說明符。

您已經提供2017-09-18 00:00這是YYYY-MM-DD HH:MM。 您需要提供2017-09-18 00:00:00

所以您的查詢應該如下

SELECT 
    user_id 
FROM 
    dataset.table 
WHERE 
    timestamp > TIMESTAMP("2017-09-18 00:00:00") 
+0

該死的,就是這樣。感謝併爲這個愚蠢的問題感到抱歉。 –

0

另一種方式來寫這個表達式,而無需指定額外的零是:

TIMESTAMP(DATE "2017-09-18")