2023年4月8日08:44:15

Posted xjxkzcy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023年4月8日08:44:15相关的知识,希望对你有一定的参考价值。

有问题,有问题,这个思想汇报要得时间有点久,我必须得快点了,总不能再拖下去了。

解决方案:以后写思想汇报还是一个季度一篇,不要再来一起补了,太费时间了。

昨天起的比较晚,今天算是缓过来了,作息开始规律 起来了。

Spring框架,算法,老师的实验作业,要学的东西还是很多,压力蛮大的。

路漫漫其修远兮,吾将上下而求索。

SQL 按键重复开始和结束日期

【中文标题】SQL 按键重复开始和结束日期【英文标题】:SQL recurring start and end dates by key 【发布时间】:2018-06-18 21:04:42 【问题描述】:

(SQL Server 2016)给定一个键和日期范围,如下所述:

关键日期 2018 年 1 月 1 日 b 2018 年 1 月 1 日 2018 年 1 月 2 日 b 2018 年 1 月 2 日 2018 年 1 月 3 日 b 2018 年 1 月 3 日 2018 年 1 月 4 日 b 2018 年 1 月 4 日 2018 年 1 月 5 日 b 2018 年 1 月 5 日 2018 年 1 月 13 日 b 2018 年 1 月 13 日 2018 年 1 月 14 日 b 2018 年 1 月 14 日 2018 年 1 月 15 日 b 2018 年 1 月 15 日 2018 年 1 月 16 日 2018 年 1 月 17 日 等等

是否可以返回以下内容(每个键的组总是相隔一天):

关键开始日期结束日期 a 2018 年 1 月 1 日 2018 年 1 月 5 日(a 的第一组) a 2018 年 1 月 13 日 2018 年 1 月 17 日(a 的第二组) b 2018 年 1 月 1 日 2018 年 1 月 5 日 b 2018 年 1 月 13 日 2018 年 1 月 15 日 *新的开始* *新的结束* 等等

编辑:感谢您的 cmets。针对以下问题,我尝试了 Lead()、一个游标和多个嵌入式循环。在大多数情况下,结果集不正确(放错日期或跳过键)或执行时间过长。

【问题讨论】:

你试过什么?你的 dbms 是什么? 这看起来像是一个差距和孤岛问题。 sqlshack.com/data-boundaries-finding-gaps-islands-and-more 您使用的是哪个DBMS? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签postgresqloracledb2sql-server、... 【参考方案1】:

这是一种间隙和孤岛问题,但它与标准问题有点不同,因为您的两个键的日期序列是相互独立的。您可以使用一个row_number() 日期差异来做到这一点:

select key, min(date), max(date)
from (select t.*,
             row_number() over (partition by key order by date) as seqnum_k
      from t
     ) t
group by key, dateadd(day,  - seqnum_k, date)
order by key, min(date);

这是使用 ANSI 标准语法进行日期算术;所有数据库都支持该功能,但语法可能会有所不同。

【讨论】:

感谢您的回复。您描述的结果集确实返回每个键的边界日期,例如'a' 1/1/2018 1/1/2017,但是如何返回子组 'a' 1/1/2018 1/5/2018 和 'a' 1/13/2018 1/17/2018 @Semp 。 . .第二种解决方案更适合您的问题。 对 *** 很陌生,我从阅读一些帖子中了解到“谢谢”不是必需的,但您的解决方案为我节省了无数小时,如果不是几天的话。谢谢!

以上是关于2023年4月8日08:44:15的主要内容,如果未能解决你的问题,请参考以下文章

2023年节日调休日历表

2023年3月27日

Windows Anaconda YOLOv3环境部署--2023年1月8日

Windows Anaconda YOLOv3环境部署--2023年1月8日

2023年4月14日(软件工程日报)

2023年4月19日(软件工程日报)