开发者社区 问答 正文

MaxCompute内建日期函数报错信息

MaxCompute内建日期函数,DATEPART函数命令格式为 bigint datepart(datetime date, string datepart)用于提取日期date中指定的时间单位datepart的值。DATETIME类型。如果输入为STRING类型会隐式转换为DATETIME类型后参与运算,其它类型抛异常。但是客户在使用函数的时候没有实现STRING类型隐式转换为DATETIME。报错信息:FAILED:ODPS-0130121:[1,50] Invalid type STRING of argument 1 for function datepart, expect DATETIME。如何解决?

展开
收起
montos 2020-05-27 16:22:39 3153 分享 版权
1 条回答
写回答
取消 提交回答
  • 打开新类型odps.sql.type.system.odps2=true时某些隐式类型转换会被禁用,包括STRING->BIGINT,STRING->DATETIME,DOUBLE->BIGINT,DECIMAL->DOUBLE,DECIMAL->BIGINT都是有精度损失或者报错的风险。这种情况可以通过cast函数做强制转换的方式来解决或者关掉新类型flag。
例如:select datepart(cast('2019-12-02 00:00:30' as datetime),'yyyy');
 set odps.sql.type.system.odps2=false

    如有更多疑问咨询可以加入MaxCompute开发者社区钉群点击链接

    2020-05-27 17:13:33
    赞同 展开评论