鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

MySQL迁移至DM8常见SQL兼容性问题

to_char或to_date函数替代DATE_FORMAT()函数

在MySQL中若使用到DATE_FORMAT()函数,可以在DM数据库中使用to_char或to_date函数改写。例如:

  • MySQL写法:select date_format(sysdate(), '%Y年%m月') from dual
  • DM写法:select translate(to_char(sysdate, 'yyyy-mm#'),'-#','年月') from dual

convert函数使用规则

在MySQL中convert()函数中value在前,type在后,DM数据库中相反,若使用convert()函数,请修改参数顺序。例如:

  • MySQL写法:CONVERT(CASE WHEN TEMP_STA.c_data_value THEN NULL ELSE TEMP_STA.c_data_value END, SIGNED) AS "ONLINEUSER"
  • DM写法:CONVERT(INTEGER,CASE WHEN TEMP_STA.c_data_value THEN NULL ELSE TEMP_STA.c_data_value END) AS "ONLINEUSER"

cast函数使用规则

DM中cast()用法与MySQL一致,但使用效果不同,例MySQL中对于数值类型的value转char类型没有限制,DM中则存在限制。可将cast(数值类型的value as char)转换为cast(数值类型的value as varchar),对于unsigned类型可以根据实际情况做对应改变或确定是否有必要进行转换。

DM中使用TIMESTAMPADD替代date_add函数

在MySQL中若采用date_add函数对添加时间间隔的表达式进行求值,可在DM中使用TIMESTAMPADD函数进行替代。例如:

  • MySQL写法:select DATE_ADD(sysdate(), INTERVAL 1 YEAR);
  • DM写法:select TIMESTAMPADD(SQL_TSI_YEAR, 1,sysdate());

interval关键字的使用

在MySQL中若使用类似interval 1 year的时间间隔表达式,在达梦数据库中,interval关键词后的正数需添加单引号,如interval '1' year,对于负数需改写,如interval '-1' year。