Mysql 列出日期范围之间的日期,但仅在一周中的特定日期

拜25

我正在使用下面的代码来获取日期范围之间的日期列表。

SELECT ADDDATE('2012-02-10', INTERVAL @i:=@i+1 DAY) AS DAY
FROM (
SELECT a.a
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
) a
JOIN (SELECT @i := -1) r1
WHERE 
@i < DATEDIFF('2012-02-15', '2012-02-10')

现在我只想列出与一周中特定日期匹配的日期(即它只会在日期是星期一或星期四时返回)。

有任何想法吗?

法比安·施泰纳

使用从星期一开始的函数 WEEKDAY() 来计算它。

例如:

where WEEKDAY(DAY) = 'Monday';

一天以上使用 in 关键字:

where WEEKDAY(DAY) in ('Monday', 'Tuesday','Friday');

当您使用别名时,您必须使用 have 而不是 where:

having WEEKDAY(DAY) in ('Monday', 'Wednesday');

最终查询:

SELECT ADDDATE('2018-03-01', INTERVAL @i:=@i+1 DAY) AS DAY
FROM (
SELECT a.a
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
) a
JOIN (SELECT @i := -1) r1
WHERE 
@i < DATEDIFF('2018-03-20', '2018-03-01') having WEEKDAY(DAY) in        
('Monday', 'Wednesday');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在MySQL中获取日期的第一周

来自分类Dev

mysql查询获取两个日期之间的第一个特定日期

来自分类Dev

在MySql中查找特定日期

来自分类Dev

MySQL:如何从特定日期算起1周

来自分类Dev

从过去的一周中获取MySQL的所有日期,并每天工作

来自分类Dev

mysql比较特定日期

来自分类Dev

从特定日期提前一周

来自分类Dev

MySQL计数和特定日期之间的分组

来自分类Dev

MySQL中的日期范围

来自分类Dev

检查一周的日期是否位于两个特定日期之间 SQL ORACLE

来自分类Dev

如何在mysql中获取特定日期?

来自分类Dev

如何备份特定日期和时间的mysql中的数据?

来自分类Dev

在PHP mysql中为特定日期创建事件

来自分类Dev

如何涂黑一周中的特定日期(日期选择器)[VB]

来自分类Dev

在日期时间强制执行一周中的特定日期

来自分类Dev

如何涂黑一周中的特定日期(日期选择器)[VB]

来自分类Dev

MySQL-选择特定日期

来自分类Dev

从mysql查询中提取特定日期

来自分类Dev

MYSQL:从特定日期删除记录

来自分类Dev

MySQL 计算特定日期时间

来自分类Dev

Cron Job仅在一周的特定日期运行几天

来自分类Dev

Cron Job仅在一周的特定日期运行几天

来自分类Dev

具有特定日期格式的MySQL日期间隔

来自分类Dev

mysql删除日期大于特定日期的行

来自分类Dev

在MySQL中检查日期范围

来自分类Dev

在MYSQL中获取两个日期范围之间的记录

来自分类Dev

如何在mysql中使用特定日期范围制作报告

来自分类Dev

Cron表达,不包括一周中的特定日期

来自分类Dev

Cron表达式,不包括一周中的特定日期