2017-07-24 133 views
0

我正在嘗試爲連接到Google BigQuery的tableau儀表板創建查詢。我們每個月的數據都有表格,但我想在任何給定時間顯示最近30天的數據(因此它必須跨越多個表格)。當前查詢給出了錯誤「時間戳文字或顯式轉換爲時間戳是必需的。」我一直在尋找一些如何轉換爲時間戳,但沒有發現有用的幫助。這是我的代碼。過去30天在bigquery中的結果

SELECT 
     DATE(date_time) AS date, 
    FROM 
     TABLE_QUERY(myTable, "date(concat(left(table_id,4),'-',right(table_id,2),'-','01')) >= '2017-06-01'") 
    WHERE 
     DATE(date_time) >= DATE_ADD(day,-30, current_date()) 
     and DATE(date_time) <= current_date() 
    ORDER BY 
     date 

任何幫助將如何得到它的工作將不勝感激。

注:我們使用傳統的SQL

+1

只是想知道,是否有不使用推薦[標準](https://cloud.google.com/bigquery/理由docs/reference/standard-sql /)版本? –

+0

@WillianFuks我的公司還沒有遷移到使用標準版本,所以我堅持使用舊版。 – kshoe94

+0

我強烈建議投資一些時間進行遷移。我們在我們公司也做過同樣的事情,這是值得的。 –

回答

1

使用谷歌自己的文檔,它會出現在你需要扭轉在DATE_ADD()函數的參數。該函數應該有三個參數如下調用:

DATE_ADD(<timestamp>,<interval>,<interval_units>) 

與間隔單元是你引用的那種時間單位(日,小時,一年等)

你得到的原因您所遇到的錯誤是Google試圖將day轉換爲某種date格式。

來源:Google Query Reference

引用文字:

DATE_ADD(時間戳,間隔, interval_units)

添加指定的間隔將時間戳數據類型。可能的 interval_units值包括YEAR,MONTH,DAY,HOUR,MINUTE和 SECOND。如果間隔爲負數,則從TIMESTAMP數據類型中減去間隔 。

實施例:

SELECT DATE_ADD(TIMESTAMP( 「2012-10-01 2點03分04秒」),5, 「YEAR」);

返回:2017年10月1日2點03分04秒UTC

SELECT DATE_ADD(TIMESTAMP( 「2012-10-01 2點03分04秒」),-5, 「YEAR」);

返回:2007-10-01 2時03分04秒UTC

+1

這絕對是我的問題之一,但我也意識到我需要將DATE_ADD函數中涉及的所有日期和時間戳比較。謝謝您的幫助 – kshoe94

相關問題