当前位置: 首页 > 面试题库 >

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

方英耀
2023-03-14
问题内容

我有一个要求,我要获取两个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


问题答案:

首先,这是一个好消息:您的值是可保存的,就是将它们简单地比较 为字符串
将返回正确的结果(MAX(...)将根据需要工作)。这对转换无济于事,但至少它仍会吐出“更大”的值。

对于投射,您可以在这里做几件事。

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

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)

但是,更好的选择可能是让调用您的数据库的人传入以atimestamp而不是a形式输入的参数string-这意味着您根本不必执行任何转换方法。



 类似资料:
  • 问题内容: 我正在开发一个具有聚类列的时间序列数据模型,即 我希望针对分区列“ id”和集群列“ time”执行选择。例如,id:=‘1’,时间戳:=‘2017-10-09’ 检查iterable.Close()的err后,发现编组错误 {“错误”:[“无法将字符串编组为时间戳”]} 我该如何解决? 问题答案: 这是我最后通过将字符串文字(带有时间戳)转换为类型time来解决此问题的方法。

  • 在我的数据集中,我有一个变量< code>duration,其中有200万行< code>ISO 8601格式的数据。示例格式:< code>PT21S或< code>PT5M29S,< code>PT1M16S 我在将此字符串变量转换为时间时遇到问题。目前我正在使用查询: 通过该查询,可以区分持续时间是小时、分钟还是秒。我想将字符串持续时间转换为时间。我用过Regex和cast,但没有成功。当我

  • 问题内容: 我需要将时间戳字符串转换为。例如: 至 这里是月,日期,年,小时,分钟和秒。 问题答案: 您 可以 这样做: 但我 强烈 建议您改用Joda Time。从长远来看,它是一个更好的日期/时间库。特别是,Joda Time中的格式化程序/解析器是线程安全的,因此您可以自由和静态地重用它们。 不是 线程安全的,因此您需要为每个线程创建一个线程,或使用一个块序列化对其的访问。

  • 我知道这是一个非常常见的问题,但我觉得我找到的答案并没有真正解决问题。我将概述我的具体用例,并对来自其他SO答案和网络的信息进行总结。 对于我正在编写的服务,数据库条目被创建并存储在移动设备和我们的网站上,需要以两种方式同步。我们目前的目标是Android和iOS,它们都使用sqlite作为关系数据库。服务器端是使用Django和MySQL在Python中实现的,但将来可能会有其他解决方案取代它。

  • 问题内容: 如何将以下格式转换为Unix时间戳? 我从数据库获得的格式似乎最后有。我尝试使用以下方法,但没有用: 问题答案: 试试这个查询 此查询