gpt4 book ai didi

工作日在 2 个日期之间的 MySQL 查询结果

转载 作者:行者123 更新时间:2023-11-29 00:28:43 24 4
gpt4 key购买 nike

我需要一个查询来从具有 2 列的表中获取结果

列 startdt(日期时间),列 enddt(日期时间)有一些startdt 2013-07-19和enddt 2013-07-29的记录

我需要获取工作日 = 1(星期二)的记录
日期为 2013-07-19 的记录是工作日 4,结束于 2013-07-29,即 0

实际上我想获得周一或其他工作日的结果。

您可以查看上面的链接以获取示例 http://sqlfiddle.com/#!2/a80ce/1

如果你不明白我想做什么,让我解释一下。我有一个从 7 月 15 日开始到 7 月 25 日结束的事件。(从星期一开始到星期四结束)用户选择一周中的一天(星期一、星期二等)。如果他选择星期二,那么我想要的查询将获取星期二事件的所有事件。

我已经找到了答案所以如果有人想检查一下

SELECT articleid,startdt,enddt,dayofweek(startdt), DATEDIFF(enddt,startdt) datedf 
FROM events
WHERE (dayofweek(events.startdt) <= 3 AND dayofweek(events.enddt) >= 3)
OR DATEDIFF(enddt,startdt) >=6

(3是工作日“星期二”的编号)

最佳答案

如何使用其他人给您的评论并使用结合了 dayofweek 和简单的更大/更小/等于语法的查询,如下所示:

SELECT * FROM events where dayofweek(events.startdt) <= 6 AND dayofweek(events.enddt) >= 6

如果用户指定星期五 (= 6),这将给出以下结果:

ARTICLEID   STARTDT     ENDDT
4 July, 12 2013 00:00:00+0000 July, 26 2013 00:00:00+0000
6 July, 16 2013 00:00:00+0000 July, 20 2013 00:00:00+0000

我确实认为你最好使用 dayofmonth 但是因为这(可能只是对我而言)使它更清楚,可能结合使用两者以确保它在星期五处于事件状态。

OP 指出历史中的事件也应该被检索,因此下面的查询做他想做的:

SELECT * FROM events where dayofweek(events.startdt) <= 6 AND dayofweek(events.enddt) >= 6 OR DATEDIFF(enddt,startdt) >=6

关于工作日在 2 个日期之间的 MySQL 查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17650762/

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