gpt4 book ai didi

python - SQLite:选择所有日期值对,其中每个日期和第一个日期之间的距离是特定时间段的倍数

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:23 25 4
gpt4 key购买 nike

我正在使用 SQLite 和 Python 并尝试获取这些特定日期(和相应的值)。我认为一个例子最能说明我在寻找什么。考虑从此数据中选择:

-(2011-01-02, 4.0)
-(2011-01-14, 5.0)
-(2011-02-02, 5.5)
-(2011-02-07, 6.5)
-(2011-02-12, 7.0)
-(2011-02-15, 4.0)
-(2011-03-02, 2.5)
-(2011-03-09, 3.5)

第一个日期和我们要查找的所有日期之间的周期距离为一个月(或多个),我们返回此数据:

-(2011-01-02, 4.0)
-(2011-02-02, 5.5)
-(2011-03-02, 2.5)

如果可能的话,我一直在寻找能为我提供这些数据的 SQL 语句。

附加问题:如果没有距离初始日期恰好一个月的倍数的日期点,我如何才能在我的数据库中获取最近的日期?

我希望我的解释足够清楚。如果没有,谢谢告知。

最佳答案

听起来这不是一个足够灵活的解决方案来满足您的需求,但为了直接回答您的问题,这里有一个查询可以满足您的需求。

此外,由于您没有指定表/列名称,我使用的测试表名为 foo,并且包含列 createdvalue.

select
foo.created, foo.value
from
-- Subquery to pick first record to base rest of query on
(
select
created,
strftime('%d', created) as day
from
foo
order by
created
limit 1
) as bar

-- Join all rows in foo that are greater than that found in 'bar'
-- and has the same day of the month.
join foo
on foo.created >= bar.created
and strftime('%d', foo.created) = bar.day

结果:

2011-01-02|4.0
2011-02-02|5.5
2011-03-02|2.5

注意 - 这可能是相当低效的,因为所有的 strftime 都已完成(我假设这里不能使用索引)。

注意 2 - 此查询不处理除恰好 一个月以外的时间间隔,如果两条记录具有相同的日期,则执行任何特殊操作,或者识别何时数据中的空白(例如:如果缺少 2011-02-02 日期,它仍会返回 2011-03-02 日期)。

关于python - SQLite:选择所有日期值对,其中每个日期和第一个日期之间的距离是特定时间段的倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733475/

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