请帮我解决下一个问题。 我有下一格式的日期时间字符串(ISO 8601):1999-12-31T23:59:59 我需要将它转换为TIMESTAMP值。 'T'分隔符中的主要问题。 我试过下一个查询:
Project A
- Common(1)
- SqlApi(1)
+ Common(2)
- CoreLogic
+ Common(3)
+ SqlApi(2)
* Common(4)
并使用不同的格式字符串,例如,YYYY-MM-DDTHH24:MI:SS,YYYY-MM-DD“T”HH24:MI:SS。
你能否为我提供正确的方法来转换这种类型的字符串而不需要任何字符替换和子字符串。 提前谢谢!
答案 0 :(得分:1)
没有内置函数可以在DB2 for Linux / UNIX / Windows中格式化ISO-8601格式的时间戳。
您可能已经猜测过,您可以使用REPLACE执行此操作:
select
TIMESTAMP_FORMAT(REPLACE('1999-12-31T23:59:59','T',' '), 'YYYY-MM-DD HH24:MI:SS')
from
ROMAN.EMPLOYEE;
创建用户定义函数(UDF)以便为您处理此格式也很简单,因此您不必在每个查询中输出这个长字符串。
可能也可以通过XQuery和xs:dateTime
来实现,尽管这比仅仅REPLACE
在{{1}的调用中嵌入更多代码}}