SQL计算用户活跃/首次行程距今天数及Presto DATEDIFF报错解决
Presto日期差值计算方案及报错解决
报错根因
你使用的DATEDIFF语法适配的是MySQL等引擎,Presto的date_diff函数要求第一个时间单位参数必须用单引号包裹,你未加引号时,引擎会将day识别为字段名检索,因此触发找不到day列的报错。
需求实现代码
- 计算用户完成首次行程至今的天数(修正后写法):
date_diff('day', first_completed_trip_timestamp, CURRENT_DATE) AS days_since_ft
如果需要规避时区差异导致的计算偏差,可先统一转换为日期类型再计算:
date_diff('day', date(first_completed_trip_timestamp), CURRENT_DATE) AS days_since_ft
- 计算用户最后一次活跃至今的天数,替换对应时间字段即可:
date_diff('day', last_active_timestamp, CURRENT_DATE) AS days_since_last_active
注意事项
Presto的date_diff返回值为第二个时间参数减去第一个时间参数的差值,若计算结果为负数,说明两个时间参数的顺序写反了。
内容的提问来源于stack exchange,提问作者Cris Rodrigues
相关产品推荐
相关产品推荐

