gpt4 book ai didi

sql - DB2 将 ISO 8601 时间戳字符串转换为 DB2 时间戳

转载 作者:行者123 更新时间:2023-12-04 18:06:56 24 4
gpt4 key购买 nike

我有一个要求,我得到两个 ISO 8601 时间戳格式的字符串,我必须比较它们并获得它们的最大时间戳。字符串采用以下格式。

2014-06-11T16:45:45Z

为了比较,我需要将它们转换为 DB2 时间戳,然后进行比较。问题出在“T”和“Z”字母上。因此,我无法转换。我知道我可以简单地REPLACE T 和 Z 并转换,但我想知道是否有更好的方法。

我尝试了以下功能,但无法获得所需的结果。

to_date, to_timestamp, varchar_format, cast as

使用 DB2 LUW v9.7

最佳答案

首先,好消息:您的值是 SARGable 的,只需将它们作为字符串进行比较 将返回正确的结果(MAX(...) 将作为需要)。这对转换没有帮助,但至少它仍然会吐出“更大”的值(value)。

对于转换,您可以在这里做几件事。

首先,只要您的日期/时间部分保持该格式,单独获取它们并重新组合时间戳可能会更容易:

TIMESTAMP(SUBSTR(@inputParm, 1, 10), SUBSTR(@inputParm, 12, 8)) AS resultTimestamp

LUW 还有一个函数叫做 TIMESTAMP_FORMAT (TO_TIMESTAMP 在技术上是这个的同义词)。我假设系统实际上因为传入数据中没有小数秒而窒息。我建议尝试这样的事情:

TIMESTAMP_FORMAT('YYYY-MM-DD HH24:MI:SS ', @inputParm)

但是,更好的选择可能是让调用您的数据库的人传入一个类型为 timestamp 而不是 string 的参数 - 这意味着您不会根本不需要做任何转换变通办法。

关于sql - DB2 将 ISO 8601 时间戳字符串转换为 DB2 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24161528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com