如果提供的参数不是有效的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
答案 0 :(得分:1)
我只是做了很多测试,似乎确实行为就像你解释的那样:
默认情况下,TIMESTAMP()似乎接受一个字符串,但如果它得到一个int,它将被视为一个int(我试过TIMESTAMP(2011)并且它给了我EPOCH + 33分钟左右(它)似乎填补你的号码))。
在任何情况下,我都认为这两种行为都应该是一致的,而这在某种程度上是不可取的。您始终可以提交缺陷报告或功能请求here以记录或更改行为。