BigQuery'TIMESTAMP(<date_string>)'返回无效字符串参数

时间:2015-07-27 04:27:51

标签: google-bigquery

如果提供的参数不是有效的TIMESTAMP(<date_string>),BigQuery的STRING函数返回纪元时间而不是查询失败是否正确?

例如:

SELECT TIMESTAMP(2015-06-30) as foo FROM [a_table]

..作为有效的SQL运行并返回 1970-01-01 00:32:59 UTC

显然,这个论点缺少了封闭的引号,所以:

SELECT TIMESTAMP('2015-06-30') as foo FROM [a_table]

..现在返回 2015-06-30 00:00:00 UTC

相比之下,PARSE_UTC_USEC(<date_string>)也需要STRING参数,当它不合适STRING时会抱怨:

SELECT PARSE_UTC_USEC(2015-06-30) as foo FROM [a_table]
  

错误:PARSE_UTC_USEC的参数必须为STRING类型但是为int64

1 个答案:

答案 0 :(得分:1)

我只是做了很多测试,似乎确实行为就像你解释的那样:

默认情况下,TIMESTAMP()似乎接受一个字符串,但如果它得到一个int,它将被视为一个int(我试过TIMESTAMP(2011)并且它给了我EPOCH + 33分钟左右(它)似乎填补你的号码))。

在任何情况下,我都认为这两种行为都应该是一致的,而这在某种程度上是不可取的。您始终可以提交缺陷报告或功能请求here以记录或更改行为。