2016-08-22 5 views
9

Ich habe eine BigQuery-Tabelle mit einer Spalte Date, die ein date Typ ist. Ich versuche, diese Abfrage auszuführen:BigQuery - Wie vergleicht man eine "Datum" -Spalte (mit altem SQL)?

SELECT * FROM dataset.table_name WHERE Date = "2016-07-11" 

Dieser den Fehler wirft:

Argument type mismatch in function EQUAL: 'Date' is type int32, '2016-07-11' is type string 

ich auch diese Abfrage versucht haben:

SELECT * FROM dataset.table_name WHERE Date = TIMESTAMP("2016-07-11") 

aber gibt 0 Ergebnisse, obwohl mein Tisch enthält mindestens einen Datensatz mit diesem Wert (2016-07-11) in der Spalte Date.

Also, wie kann ich ein date Feld in BigQuery vergleichen?

Antwort

10

Versuchen unter

WHERE DATE(Date) = "2016-07-11" 

Meine zusätzliche Empfehlung wäre, nicht reservierte Wörter als Spaltennamen zu verwenden, denke ich, wenn Ihre Spalte korrekt benannt wurde - Ihre ursprüngliche WHERE Klausel würde funktionierte perfekt, und Sie würden nicht brauchen verwendet Abhilfe mit DATE()=""

+0

Dies funktioniert, danke :) Ich habe es auch geschafft, um es mit funktioniert WHERE CAST (Datum als STRING) = „2016.07.11“ '. Ich habe versucht, mit einem anderen Spaltennamen, aber die ursprüngliche Abfrage immer noch den _argument Typ Mismatch_ Fehler. – rereradu

+0

Akzeptiert antworten Sie. Danke :) – rereradu

+0

Danke für die Lösung. FWIW, 'DATE' ist nicht in der Liste der reservierten Wörter aufgeführt (https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#reserved_keywords). Und das Ändern des Spaltennamens schien den Fehler nicht zu ändern. Das Seltsame ist, dass das Schema den Spaltentyp 'DATUM' anzeigt. – jwadsack

0

Diese Lösung für mich nicht funktioniert:

DATE(Date) = "2016-07-11" 

In tead, musste ich benutze:

Date = TIMESTAMP("2016-07-11") 
+1

Es bedeutet nur, dass Ihr Bereich ist nicht vom Datumstyp wie in Frage sondern eher Zeitstempel! –

+0

Der Datentyp ist wichtig: o) –

Verwandte Themen