gpt4 book ai didi

sql - 将十进制值转换为日期 - Informix DB

转载 作者:行者123 更新时间:2023-12-04 14:04:04 25 4
gpt4 key购买 nike

我正在尝试在 select 语句中将十进制值转换为日期

SELECT user_id, extend(dbinfo("UTC_TO_DATETIME",min(creationdate)), year to fraction) AS earned_date
FROM 消息

但是我收到了这个错误

 Value exceeds limit of INTEGER precision

表中的字段定义是这样的

  creationDate      decimal(14,0) NOT NULL

看来我没有使用正确的方式进行转换,知道吗?

最佳答案

我认为您不需要在此上下文中使用 EXTEND - EXTEND 用于更改 DATETIME 和 INTERVAL 值的比例。

UTC_TO_DATETIME returns a DATETIME已经值了。

你试过吗:

SELECT user_id, dbinfo("UTC_TO_DATETIME",min(creationdate)) AS earned_date
FROM message

那会产生什么?

更新

啊,举个例子吧!

您传递的值不是 UTC_TO_DATETIME 预期的 UTC 日期时间。该函数需要一个表示秒而不是毫秒的整数。就这么简单。

DBINFO('UTC_TO_DATETIME', 1329994172574) 超出整数精度。

DBINFO('UTC_TO_DATETIME', 1329994172574/1000) 另一方面,产生:

2012-02-23 21:49:32,我想这正是您所期望的?

如果您查看我之前提供的链接,它会解释小数秒的处理方式。 (剧透:它们被忽略了。)

如果小数秒非常重要,我猜你将不得不EXTEND此函数的结果为小数秒,然后将 MOD(creationdate,1000)/1000 添加到它.

例如:

SELECT user_id, 
(dbinfo("UTC_TO_DATETIME", MIN(creationdate)/1000 )::DATETIME YEAR TO FRACTION(3)
+ (MOD(MIN(creationdate),1000)/1000) UNITS FRACTION) AS earned_date
FROM message

(但就个人而言,无论如何我都倾向于将这个逻辑放入 SPL 中,因此您可以这样调用它:SELECT user_id, millis_to_time(MIN(creationdate))... 并避免到处写这种复杂的算法。)

关于sql - 将十进制值转换为日期 - Informix DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865083/

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