1 DATE_FORMAT()函数
以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 dua
--MYSQL
select DATE_FORMAT(C_FIRST_TIME,'%Y-%m-%d %H') FROM DUAL;
--DM
select TO_CHAR(C_FIRST_TIME, 'YYYY-MM-DD HH24') FROM DUAL;
2 IF()函数
MySQL中的if()函数在当前测试版本DM中不支持,需采用case when进行替代,后续新版本可能会支持。
3 CONVERT()函数
DM的convert()函数中的type在前, value在后,而MySQL数据库中convert()函数则恰恰相反,对于cast()函数的用法则一致,测试示例如下:
--MYSQL
CONVERT(CASE WHEN TEMP_STA.c_data_value < 0 THEN NULL ELSE TEMP_STA.c_data_value END, SIGNED) AS "ONLINEUSER",
--DM
CONVERT(INTEGER,CASE WHEN TEMP_STA.c_data_value < 0 THEN NULL ELSE TEMP_STA.c_data_value END) AS "ONLINEUSER"
4 CAST()函数
DM中的cast()函数的用法虽然和MySQL一致,但使用效果存在不同,MySQL中对于数值类型的value转char类型没有限制,DM中则存在限制,会报“数据转换失败”等报错,可将cast(数值类型的value as char)转换为cast(数值类型的value as varchar),对于unsigned类型可以根据实际情况做对应改变或确定是否有必要进行转换。
5 DATE_ADD函数
date_add函数若对添加时间间隔的表达式进行求值,可采用DM的TIMESTAMPADD函数进行替代,例子如下:
--MYSQL
select DATE_ADD(sysdate(), INTERVAL 1 YEAR);
--2020-07-02 11:24:18
--DM
select TIMESTAMPADD(SQL_TSI_YEAR,1,sysdate());
--2020-07-02 11:27:56.000000