gpt4 book ai didi

mysql - 间隔日期之间的查询

转载 作者:行者123 更新时间:2023-11-29 19:40:41 24 4
gpt4 key购买 nike

我有下表。

enter image description here

我正在尝试获取与任何日期相交的记录,例如,如果我需要 2002-12-29 和 2002-12-30 之间的百分比,我应该获取百分比为 28.60 的第一条记录,我编写一个查询但有时我会得到一些记录,但有时我什么也得不到。任何帮助都会很棒。

这是查询

SELECT *
FROM myTable
WHERE ((fec_inicio < '2002-12-29'
AND fec_fin > '2002-12-29')
OR (fec_inicio < '2002-12-30'
AND fec_fin > '2002-12-30'))

最佳答案

听起来您正在寻找 SQL overlaps 运算符,我认为 MySQL 不支持该运算符。 overlaps 运算符定义为

row_constructor overlaps  row_constructor

行构造函数具有以下形式

(Ls, Le) OVERLAPS (Rs, Re)

其中Ls表示左侧开始Le表示左侧结束,依此类推 p>

overlaps 运算符被定义为在语义上与此表达式等效。

(Ls > Rs and (Ls < Re or Le < Re) ) or
(Rs > Ls and (Rs < Le or Re < Le) ) or
(Ls = Rs and Le is not null and Re is not null)

替换你的值(value)观给了我这样的东西。 (未测试)

select *
from myTable
where ( '2002-12-29' > fec_inicio and ('2002-12-29' < fec_fin or '2002-12-30' < fec_fin) ) or
( fec_inicio > '2002-12-29' and (fec_inicio < '2002-12-30' or fec_fin < '2002-12-30') ) or
( '2002-12-29' = fec_inicio and '2002-12-30' is not null and fec_fin is not null);

我希望我的替换是正确的。 (而且我们知道希望不会很好地扩展。)

从您的问题中不清楚您需要如何处理重叠多行的范围。但是,例如,从上面的查询中选择最小日期,并在该日期上进行内连接以获取完整行应该足够简单。

话虽如此,您选择百分比的逻辑似乎很奇怪。考虑一下。

关于mysql - 间隔日期之间的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41374723/

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