【问题描述】
因为要转换的值中包含了不属于时间格式的字符(T,Z),这可能是数据迁移时 时间参数设置不对导致的。具体没有进行考究
【问题解决】
使用 DATE 分隔符 解决
【手册链接】
【自定义转换函数】
这里的自定函数是不完善的,因为我的数据中是存在T、Z导致的。
其实首先应该是检测是否符合日期格式,之后根据是哪种日期格式进行转
其次else之后的数据 用正则校验,之后REPLACE 为空 再转
或者不用REPLACE 替换为空,直接用实际分隔符进行处理。
但是由于种种原因,不写了
CREATE OR REPLACE FUNCTION ConvertToDateTime(inputString VARCHAR)
RETURNS TIMESTAMP
BEGIN
DECLARE resultTimestamp TIMESTAMP;
IF inputString LIKE '%T%' THEN
inputString = REPLACE(inputString, 'T', ' '); -- 将 'T' 替换为空格
END IF;
inputString = SUBSTRING(inputString FROM 1 FOR 23); -- 截取到毫秒部分
resultTimestamp = TO_TIMESTAMP(inputString, 'YYYY-MM-DD HH24:MI:SS.FF3'); -- 使用 TO_TIMESTAMP 函数转换为时间戳
RETURN resultTimestamp;
END
标签:--,TIMESTAMP,inputString,REPLACE,字符串,resultTimestamp,date,格式,达梦
From: https://blog.csdn.net/weixin_46424784/article/details/139086907