请求协助:将PostgreSQL日期计算查询转换为Google BigQuery
解决BigQuery中DATE_ADD的语法错误问题
我来帮你搞定这个语法错误!你的问题出在BigQuery对DATE_ADD函数的参数格式要求和PostgreSQL不一样,咱们一步步来修正:
错误原因分析
你写的INTERVAL (1 day * days_supply)不符合BigQuery的语法规则,BigQuery中使用DATE_ADD时,间隔的数值和单位需要分开指定,不能像PostgreSQL那样通过乘法拼接单位和数值。
正确的BigQuery查询写法
原PostgreSQL的逻辑是:如果计算后的日期和原起始日期相同(比如days_supply为0),则返回NULL,否则返回计算后的日期,再通过COALESCE处理NULL情况。对应BigQuery的正确写法如下:
SELECT COALESCE( NULLIF( DATE_ADD(drug_exposure_start_date, INTERVAL days_supply DAY), drug_exposure_start_date ) ) FROM `x`
逻辑说明
DATE_ADD(drug_exposure_start_date, INTERVAL days_supply DAY):直接将drug_exposure_start_date加上days_supply天,这和你原查询中drug_exposure_start_date + (INTERVAL '1 day' * days_supply)的逻辑完全等价NULLIF(..., drug_exposure_start_date):如果计算后的日期和原起始日期一致,就返回NULLCOALESCE(...):保留原逻辑中对NULL值的处理(如果后续需要补充默认值,直接在COALESCE里加第二个参数即可)
内容的提问来源于stack exchange,提问作者user9807750
相关产品推荐
相关产品推荐

