2017-05-02 8 views
0

wenn eine Tabelle abfragen, die eine Spalte „Zeitstempel“ (Unix-Zeitstempel, UTC, Millisekunden, Typ integer in der BigQuery Tabelle) hatzeitbezogenen Funktion für Unix-Zeitstempel in BigQuery

Ich möchte sagen können: Zeitstempel zwischen one_week_ago und jetzt

ohne Angabe der genauen Zeitstempel in jeder Abfrage. Ich sollte hinzufügen, dass ich weiß, das folgende Arbeits query:

WITH timerange AS 
(SELECT *, 
TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 * 24 HOUR) AS one_week_ago, 
CURRENT_TIMESTAMP() AS now, 
TIMESTAMP_SECONDS(timestamp) AS measurement_time 
FROM table_name), 

grouped AS 
(SELECT field1, field2, count(*) count 
FROM timerange 
WHERE measurement_time BETWEEN one_week_ago AND now 
GROUP BY field1, field2 
) 

SELECT * FROM timerange 
WHERE field2 = "example" 

aber warum bin ich nicht einfach sagen können: Zeitstempel zwischen function_call1 und function_call2 ?

dies sind Beispiele für den Zeitstempel: 1491544587, 1491422047, 1491882866, 1491881903 1491436515, 1491436771, 1491436593, 1491436621, 1491436390, 1491436334

https://cloud.google.com/bigquery/docs/reference/legacy-sql https://cloud.google.com/bigquery/docs/reference/standard-sql/

Antwort

1

Sie können sicher in Standard-SQL sagen, wie Sie wollen :

SELECT * 
FROM table 
WHERE TIMESTAMP_SECONDS(timestamp) BETWEEN 
    TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 * 24 HOUR) 
    AND CURRENT_TIMESTAMP()