我查看了BigQuery命令行工具文档,我发现您可以在WHERE子句中使用时间戳文字。 The documentation显示以下示例:
$ bq query "SELECT name, birthday FROM dataset.table WHERE birthday <= '1959-01-01 01:02:05'"
Waiting on job_6262ac3ea9f34a2e9382840ee11538ef ... (0s) Current status: DONE
+------+---------------------+
| name | birthday |
+------+---------------------+
| kim | 1958-06-24 12:18:35 |
+------+---------------------+
由于dataset.table不是公共数据集,我使用维基百科数据集构建了一个示例。
SELECT title, timestamp, SEC_TO_TIMESTAMP(timestamp) AS human_timestamp
FROM publicdata:samples.wikipedia
HAVING human_timestamp>'2008-01-01 01:02:03' LIMIT 5
该示例适用于BigQuery Browser,但它不适用于bq工具。为什么?我试图使用scape字符和单引号和双引号的几种组合而没有成功。这是一个Windows问题?以下是截图:
编辑:这是BigQuery CLI 2.0.18
答案 0 :(得分:2)
我知道&#34;它适用于我的机器&#34;不是一个令人满意的答案,但我已经在我的Mac和Windows机器上尝试了这个,它似乎在两者上都能正常工作。以下是我的Windows机器输出您指定的同一查询的信息:
C:\Users\Jordan Tigani>bq query "SELECT title, timestamp, SEC_TO_TIMESTAMP(timestamp) AS human_timestamp FROM publicdata:samples.wikipedia HAVING human_timestamp>'2008-01-01 01:02:03' LIMIT 5"
Waiting on bqjob_r607b7a74_00000144b71ddb9b_1 ... (0s) Current status: DONE
您是否可以确保您使用的引号没有粘贴智能引号,并且没有可能混淆解析的任何杂散unicode字符?
另一个提示是使用--apilog=-
选项,它告诉BigQuery打印出与服务器的所有交互到stdout。然后,您可以准确地查看发送到BigQuery后端的内容,并验证引号是否符合预期。
答案 1 :(得分:1)
我发现问题是由于Windows命令行中的运算符>
更大。它与google-cloud-sdk没有任何关系,抱歉。
您似乎必须使用scape来回显命令行中的符号:^>
我在google groups (by Todd and Margo Chester)和official reference at Microsoft site.
找到了它