MRi*_*izq 1 time-series ibm-midrange
我正在谷歌搜索如何在没有运气的情况下将CHAR转换为DB2 iSeries中的TIMESTAMP,你能帮助我吗?
例如:20120216
预期成果:16/2/2012 12:00:00 AM
我的UDF:
CREATE FUNCTION TEST.CONVERT_TO_TIMESTAMP (VAL CHARACTER VARYING(20))
RETURNS TIMESTAMP
LANGUAGE SQL
SPECIFIC TEST.CONVERT_TO_TIMESTAMP
MODIFIES SQL DATA
CALLED ON NULL INPUT
FENCED
DISALLOW PARALLEL
NO EXTERNAL ACTION
BEGIN ATOMIC
DECLARE SQLCODE INTEGER DEFAULT 0 ;
DECLARE RETCODE INTEGER DEFAULT 0 ;
DECLARE RET TIMESTAMP ;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION , SQLWARNING , NOT FOUND
BEGIN
SET RETCODE = SQLCODE ;
END ;
IF ( VAL IS NOT NULL ) THEN
SET RET = CAST ( VAL AS TIMESTAMP ) ;
ELSE
SET RET = NULL ;
END IF ;
RETURN RET ;
END
GO
Run Code Online (Sandbox Code Playgroud)
-
结果是null :(
有什么建议吗?
谢谢MRizq
要将CAST作为时间戳,需要将值格式化为有效日期.'20120216'并不存在,它需要破折号:'2012-02-16'.如果您不能让调用者重新格式化输入,您必须自己按照以下方式执行此操作:
cast(date(substr(val,1,4) concat '-'
concat substr(val,5,2) concat '-'
concat substr(val,7,2)) as timestamp)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8858 次 |
| 最近记录: |