@@ -162,7 +162,8 @@ internal struct BigQueryStatementGenerator {
162162
163163 let upperType = typeName. uppercased ( )
164164
165- if upperType == " INT64 " || upperType == " FLOAT64 " ||
165+ if upperType == " INT64 " || upperType == " INTEGER " ||
166+ upperType == " FLOAT64 " || upperType == " FLOAT " ||
166167 upperType == " NUMERIC " || upperType == " BIGNUMERIC "
167168 {
168169 let isNumeric = value. range (
@@ -173,7 +174,7 @@ internal struct BigQueryStatementGenerator {
173174 return " ' \( escapeString ( value) ) ' "
174175 }
175176
176- if upperType == " BOOL " {
177+ if upperType == " BOOL " || upperType == " BOOLEAN " {
177178 let lower = value. lowercased ( )
178179 if lower == " true " || lower == " 1 " { return " TRUE " }
179180 if lower == " false " || lower == " 0 " { return " FALSE " }
@@ -204,6 +205,20 @@ internal struct BigQueryStatementGenerator {
204205 return " FROM_BASE64(' \( escapeString ( value) ) ') "
205206 }
206207
208+ // Temporal types need explicit casting for WHERE clause comparisons
209+ if upperType == " TIMESTAMP " {
210+ return " TIMESTAMP ' \( escapeString ( value) ) ' "
211+ }
212+ if upperType == " DATE " {
213+ return " DATE ' \( escapeString ( value) ) ' "
214+ }
215+ if upperType == " DATETIME " {
216+ return " DATETIME ' \( escapeString ( value) ) ' "
217+ }
218+ if upperType == " TIME " {
219+ return " TIME ' \( escapeString ( value) ) ' "
220+ }
221+
207222 return " ' \( escapeString ( value) ) ' "
208223 }
209224
0 commit comments