BigQuery:Coalesce将TIMESTAMP转换为INTEGER

时间:2016-03-24 19:54:31

标签: google-bigquery

我遇到COALESCE功能问题,当应用于TIMESTAMP字段时,它会将其转换为INTEGER 这是示例

SELECT 
   c_date AS c_date,
   COALESCE(nd.c_datetime, od.c_datetime) AS c_datetime,
   COALESCE(nd.c_timestamp, od.c_timestamp) AS c_timestamp 
FROM [table1] as nd 
LEFT JOIN [table2] as od ON  nd.c_date = od.c_date ";

虽然两个表中的所有3个字段都具有TIMESTAMP类型,但查询将首先返回TIMESTAMP,但所有其他字段将变为INTEGER。这是预期的行为吗?

P.S。我找到了解决方法

 USEC_TO_TIMESTAMP(COALESCE(nd.c_datetime, od.c_datetime)) AS c_datetime

但很简单,简单的合并需要特殊的操作来保存类型

P.P.S。我知道Google的人正在阅读stackoverflow。工作ID是job_vM_1Kxo4NBp5Ae3VmLmAI-4OXpo。希望它会对你有所帮助!

1 个答案:

答案 0 :(得分:0)

要关闭循环 - 这是跟踪器中https://code.google.com/p/google-bigquery/issues/detail?id=479报告的旧版SQL中的错误,由于此错误已修复,因此COALESCE会保留TIMESTAMP类型。