gpt4 book ai didi

mysql - 如何获取两列日期类型之间的数据

转载 作者:行者123 更新时间:2023-11-29 09:46:12 25 4
gpt4 key购买 nike

我有一个用于存储事件数据的表,其中包含以下两个条目

id | title  | startdate  | enddate
1 | event1 | 2019-04-01 | 2019-04-04
2 | event2 | 2019-04-04 | 2019-04-05

我需要编写一个查询来获取数据

id| title  | date    
1 | event1 | 2019-04-01
1 | event1 | 2019-04-02
1 | event1 | 2019-04-03
1 | event1 | 2019-04-04
1 | event2 | 2019-04-04
1 | event2 | 2019-04-05

如有任何疑问,请提出建议。

请查询Mysql。

最佳答案

您的问题的解决方案可以通过创建一个具有大约 273 年日期的表来解决。下面的查询创建表:

CREATE TABLE test2 AS 
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9);

CREATE TABLE calendar AS
select adddate('1900-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) sdate
from test2 t0,test2 t1,test2 t2,test2 t3,test2 t4;

您可以更改和增加的日历表范围:

MIN(sdate)    MAX(sdate)
1900-01-01 2173-10-15

使用上表,您可以生成所需范围内的日期。以下查询给出了您的解决方案:

SELECT id,title,c.sdate as "date" 
FROM test t
INNER JOIN calendar c
ON c.sdate BETWEEN t.startdate AND t.enddate;

输出:

id  title   date
1 event1 2019-04-01
1 event1 2019-04-02
1 event1 2019-04-03
1 event1 2019-04-04
2 event2 2019-04-04
2 event2 2019-04-05

有关演示,请点击以下链接:

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=6ebd669acae67d23cb5b6b9d04c86a10

关于mysql - 如何获取两列日期类型之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55605297/

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