gpt4 book ai didi

sql - 如何将小数日期转换为 where 语句中的日期字段?

转载 作者:行者123 更新时间:2023-12-01 11:04:00 24 4
gpt4 key购买 nike

我有一个字段是十进制日期 (YYYYMMDD)。我需要找到所有一年或更短的记录。既然约会如此简单,我尝试做:

WHERE DATE(SUBSTR(CHAR(A.CPADDT),1,4) CONCAT '-' CONCAT 
SUBSTR(CHAR(A.CPADDT),5,2) CONCAT '-' CONCAT
SUBSTR(CHAR(A.CPADDT),7,2)) > CURRENT_DATE - 1 YEAR

这在 SELECT 部分非常有效。当我把它放在 WHERE部分我得到“涉及字段 *N 的选择错误。”

对我做错了什么有什么想法吗?

最佳答案

幸运的是,YYYYMMDD 最终遵循自然顺序。因此,与其解析记录,不如“格式化”一年前的日期,并与之进行比较?

不清楚您从何处调用它,以及您是否可以在那里提供逻辑,但如果不能,并且这是在存储过程中,您始终可以将逻辑放在那里。基本上你想要类似(伪代码)的东西:

CUTOFF = CURRENT_DATE - 1 YEAR
CUTOFF_NUMERIC = CUTOFF.YEAR * 10000 + CUTOFF.MONTH * 100 + CUTOFF.DAY
SELECT ... FROM A WHERE A.CPADDT > CUTOFF_NUMERIC

很抱歉无法为您提供实际 代码 - 我不熟悉这种 SQL 方言,而且我离 SQL 专家还很远。希望这足以让您继续前进。请注意,这在性能方面也应该有所帮助 - 如果您在 CPADDT 上有索引,那么此查询可以轻松使用它,而您最初的尝试可能不能。即使您没有索引,简单的数字比较也可能比所有的格式化和解析成本更低。

关于sql - 如何将小数日期转换为 where 语句中的日期字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905862/

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