Dataphin中使用DATEDIFF函数报错“ODPS-0130071:Semantic analysis exception”

问题描述

Dataphin中使用DATEDIFF函数时报错,报错信息如下:

ODPS-0130071:[1,8] Semantic analysis exception - function DATEDIFF cannot match any overloaded functions with (STRING, STRING, STRING), candidates are BIGINT DATEDIFF(DATE arg0, DATE arg1, STRING arg2); BIGINT DATEDIFF(DATETIME arg0, DATETIME arg1, STRING arg2); BIGINT DATEDIFF(TIMESTAMP arg0, TIMESTAMP arg1, STRING arg2); INT DATEDIFF(DATE arg0, DATE arg1); INT DATEDIFF(STRING arg0, STRING arg1); INT DATEDIFF(TIMESTAMP arg0, TIMESTAMP arg1)

问题原因

DATEDIFF函数的参数类型错误,前两个参数需要为日期类型,而此处的STRING类型没有隐式转换为DATETIME类型,正确的DATEDIFF函数格式是:

bigint datediff(date|datetime|timestamp <date1>, date|datetime|timestamp <date2>, string <datepart>)

解决方案

  1. 将STRING类型的日期显示转换为日期类型,再使用DATEDIFF函数进行计算。
  2. 例如使用to_date()函数先转换成日期类型,如下所示:

适用于

  • Dataphin
阿里云首页 相关技术圈