gpt4 book ai didi

sql - 将时间戳转换为整数问题

转载 作者:行者123 更新时间:2023-11-29 11:37:00 27 4
gpt4 key购买 nike

我的 pgsql 查询有问题,它抛出“错误:整数超出范围”。

我想要完成的是检查日期包含的 valid_to 字段('timestamp without timezone' 类型)是否与当前日期完全不同(N * 间隔)。在查询失败的示例中,我使用“7776000”作为间隔(90 天),“1399327200”作为 unix 时间的当前日期。

什么有效:

SELECT 
*,
(CAST((EXTRACT(EPOCH FROM et.valid_to) - 1399327200 ) as integer) % 7776000) as modulo
FROM example_table et
WHERE et.valid_to IS NOT NULL

什么不是:

WITH table_refined as (
SELECT
*,
(CAST((EXTRACT(EPOCH FROM et.valid_to) - 1399327200 ) as integer) % 7776000) as modulo
FROM example_table et
WHERE et.valid_to IS NOT NULL
)
SELECT * from table_refined WHERE modulo=0

也不是这个:

SELECT * FROM (
SELECT
*,
(CAST((EXTRACT(EPOCH FROM et.valid_to) - 1399327200 ) as integer) % 7776000) as modulo
FROM example_table et
WHERE et.valid_to IS NOT NULL
)
AS table_temp
WHERE table_temp.modulo = 0

因为我首先从时间戳中减去当前日期,所以转换为整数的值不应超出整数范围。当然有一些 NULL,但由于第一个查询通过 OK,所以这不是问题。

最佳答案

我想我找到了原因 - 在记录中有一个带有“valid_to”字段和“2050-01-01”日期的记录,而那条记录肯定引起了所有这些大惊小怪。因此,我添加了

AND valid_to < '2100-01-01'

我的查询是什么让它最终起作用了。尽管 unix 时间将在 2038 年达到整数限制,但看起来 postgresql 转换使其达到无符号整数最大值,因此将记录限制为 2100 年有效。

关于sql - 将时间戳转换为整数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23534900/

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