文档首页/ 数据库和应用迁移 UGO/ 用户指南/ 语法转换指南/ 转换错误码/ MySQL To GaussDB 转换错误码/ U0400022:GaussDB部分时间函数不支持time或timetz类型的入参
更新时间:2025-06-04 GMT+08:00

U0400022:GaussDB部分时间函数不支持time或timetz类型的入参

描述

数据库类型与版本

  • 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。
  • 目标库类型与版本:GaussDB V2.0-8.0之前的版本。

语法示例

MySQL迁移至GaussDB V2.0-8.0之前版本时,会对ADDTIME、DAY、EXTRACT、DAYOFMONTH、DAYOFWEEK、DATEDIFF、MONTH、TO_DAYS、TRUNCATE、UNIX_TIMESTAMP、YEAR函数进行转换改写的同时并生成此错误提示。

例如获取日期中年份与月份的YEAR、MONTH函数,需要改写成GaussDB的DATE_PART函数,需要注意的是MySQL的YEAR、MONTH函数可以从time或者timetz类型中获取到日期的信息,在GaussDB的DATE_PART函数中,这是不支持的,如下示例所示。

MySQL:

SELECT YEAR(CURRENT_TIME);
SELECT MONTH(CURRENT_TIME);

转换成GaussDB语句:

SELECT DATE_PART('YEAR', CURRENT_TIME);
SELECT DATE_PART('MONTH', CURRENT_TIME);

改造建议

当出现此错误提示时,需要用户自行评估使用到这些时间函数的地方,其中是否使用了time或者timetz类型的值作为函数入参,如果使用了,则需要进行业务改造,确保转换后的时间函数不会出错。