我遇到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。希望它会对你有所帮助!
答案 0 :(得分:0)
要关闭循环 - 这是跟踪器中https://code.google.com/p/google-bigquery/issues/detail?id=479报告的旧版SQL中的错误,由于此错误已修复,因此COALESCE
会保留TIMESTAMP
类型。