gpt4 book ai didi

mysql - 如何选择每一天的日期范围

转载 作者:可可西里 更新时间:2023-11-01 08:50:37 27 4
gpt4 key购买 nike

我当然可以用服务器端语言来做到这一点,但我想知道是否可以在 SQL 中做到这一点。

我有一个像这样的表:

CREATE TABLE `dates` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`date_from` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`date_to` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
);

一些数据如

+----+---------------------+---------------------+
| id | date_from | date_to |
+----+---------------------+---------------------+
| 1 | 2013-02-27 00:00:00 | 2013-03-01 00:00:00 |
| 2 | 2013-02-18 00:00:00 | 2013-02-20 00:00:00 |
+----+---------------------+---------------------+

(所有日期都是午夜)

我想以某种方式选择这些以返回:

2013-02-27 00:00:00
2013-02-28 00:00:00
2013-03-01 00:00:00
2013-02-18 00:00:00
2013-02-19 00:00:00
2013-02-20 00:00:00

即指定范围内的所有日期。

有什么想法吗?

最佳答案

您可以尝试使用这个查询(它应该可以完成工作):

SELECT * FROM (
SELECT dates.date_from + INTERVAL a + b DAY dte
FROM
(SELECT 0 a UNION SELECT 1 a UNION SELECT 2 UNION SELECT 3
UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7
UNION SELECT 8 UNION SELECT 9 ) d,
(SELECT 0 b UNION SELECT 10 UNION SELECT 20
UNION SELECT 30 UNION SELECT 40) m, dates
WHERE dates.date_from + INTERVAL a + b DAY <= dates.date_to
ORDER BY a + b ) e ORDER BY dte;

看看 SQL Fiddle .

Reference Post .

关于mysql - 如何选择每一天的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15052957/

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