首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

T-SQL从dates表中选择过去n个月的周日到周六(相隔2周)的日期

T-SQL是一种用于管理和查询关系型数据库的编程语言,它是Microsoft SQL Server的一部分。在这个问答内容中,我们需要从dates表中选择过去n个月的周日到周六(相隔2周)的日期。

首先,我们需要了解dates表的结构和数据。假设dates表包含一个名为date的列,存储日期信息。

下面是一个解决方案的示例:

代码语言:txt
复制
DECLARE @n INT = 3; -- 假设选择过去3个月的日期
DECLARE @startDate DATE = DATEADD(MONTH, -@n, GETDATE()); -- 计算起始日期
DECLARE @endDate DATE = GETDATE(); -- 结束日期为当前日期

WITH cte AS (
  SELECT DATEADD(DAY, 1 - DATEPART(WEEKDAY, date), date) AS startDate,
         DATEADD(DAY, 7 - DATEPART(WEEKDAY, date), date) AS endDate
  FROM dates
  WHERE date >= @startDate AND date <= @endDate
)
SELECT startDate, endDate
FROM cte
WHERE DATEDIFF(WEEK, startDate, endDate) = 2
  AND DATEPART(WEEKDAY, startDate) = 1 -- 周日
  AND DATEPART(WEEKDAY, endDate) = 6 -- 周六
ORDER BY startDate;

上述代码中,我们首先声明了一个变量@n,表示选择过去的n个月。然后,使用DATEADD函数计算起始日期@startDate和结束日期@endDate。

接下来,我们使用CTE(公共表表达式)来生成一个临时表,其中包含每个日期对应的周日和周六。我们使用DATEPART函数来获取日期的星期几,并使用DATEADD函数来计算每个日期对应的周日和周六。

最后,我们从临时表中选择符合条件的日期范围,即相隔2周的周日到周六。我们使用DATEDIFF函数来计算两个日期之间的周数,并使用DATEPART函数来检查起始日期和结束日期是否为周日和周六。最后,按照起始日期进行排序。

这是一个基本的解决方案,根据实际情况可能需要进行调整。关于T-SQL和Microsoft SQL Server的更多信息,您可以参考腾讯云的SQL Server产品介绍页面:SQL Server

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基于项目蓝图分析工作资源分配

4.生成周列表 下面在数据分析我们新建一列日期,使这列日期每一行数据代表了一周时间段。而这列日期区间就是产品筹备日期开始产品下市日期,即产品全生命周期。...在Power Query中点击添加列自定义列,并在自定义列公式输入: List.Dates(Date.EndOfWeek([筹备日期]), Number.From([下市日期]- [筹备日期])/7...在生成新列后单击下方红框按钮并选择“扩展新行”,即生成新一列日期,可以看到所有的日期均为周日开始周六结束。...其中Date.EndOfWeek([筹备日期])用以计算筹备日期当周周日(因为公司每周以周一开始,周日作为最后一天)。...List.Dates函数根据给定起始日期日期个数,日期间隔生成日期列表,其使用格式为:List.Dates(start as date, count as number, step as duration

2.2K20

【工具】EXCEL十大搞笑操作排行榜

5.填充序列 如果想做一个排班,需要将2013-1-12013-12-31日期输入EXCEL,并且跳过周六周日。一个一个手动录入日期要抓狂 吧?...大多用户在A1输入2013-1-1,然后右下角一直往下拖动,一不留神拉过头了,再把多余删除,然后在MOD呀,IF呀,WEEKDAY呀,排序 呀,筛选呀,反正是把周六周日给找出来再删除,……终于搞定了,...可以在A1输入 2013-1-1,然后点击【开始】选项卡,然后在【编辑】组,找到【填充】,在出现下拉列表中选择【序列】,序列产生在列,类型选择日期日期单位 为工作日,步长值为1,终止值为2013-...如果选择数据,点击【插入】,【数据透视】,只 需将日期拖放在行标签,数量拖放在值标签,然后在数据透视日期右击,创建组。...如果你以上十项全,那么别灰心,关注我,就可以我发 布信息中了解有关OFFICE许多内容!如果你以上十项全能,那么恭禧你,你已经达到了EXCEL中级水平,请一笑而过。

3.1K60
  • 论投稿 — 投稿还要挑日子啊?!

    图 1 一周内每日投稿数,其中周三投稿数最多,其次是周二。 ? 1 一周内每日投稿数和接收情况,其中投稿数用 N 表示,被接收文章数用 Na 表示,被拒稿数用 Nr 表示。...Nrr 是指未按时提交返修稿件数量。Nw 是指投稿撤回数量。 周一至周六分别由数字 1 至 6 表示,周日为 0。...因此 N≠Na+Nr 从上表可以看出拒绝/接受概率周日 1.79 开始下降到周一 1.26,周二达最低 0.77,之后逐渐增加至 1.25,1.26,1.32,2.36(周六),这意味着周六、日拒稿概率高...图 2 示一周稿件接收概率与拒稿概率走势图:周二投稿接收率最高,周六周日拒稿率居前两位。 别赶稿子,利用周末好好写 为什么会出现这样情况?...研究最后,学者们提出论文接收和发表过程还应考虑编辑和审稿人参与,他们在其中所起作用也是值得进一步研究和探讨。 尽管研究采用样本非医学期刊,但是或许对大家有参考意义呢?

    1.5K50

    Moment.js常见用法

    moment().date(15)moment().set('date', 15)设置某个星期中某一天moment().weekday(0) // 设置日期为本周第一天(周日)moment().isoWeekday...,没有前导零112MM数字表示月份,有前导零0112MMM三个字母缩写表示月份JanDecMMMM月份,完整文本格式JanuaryDecemberQ季度14D月份第几天,没有前导零1...31DD月份第几天,有前导零0131d星期中第几天,数字表示06,0表示周日,6表示周六ddd三个字母表示星期中第几天SunSatdddd星期几,完整星期文本SundaySaturdayw...anta-range-picker组件disabledDate使用不能选择今天之前日期(包括今天)disabledDate(current) { return current && current...< moment().endOf('day');},不能选择今天之前日期(不包括今天)disabledDate(current) { return current && current < moment

    9000

    Vue学习笔记之moment.js日期处理控件

    0x00 概述 本文主要记录moment.js日期控件在vue使用; moment可以方便计算自然月或者自然年份,避免使用固定天数或者月份计算导致结束日期错乱问题。...0x01 安装moment插件 npm install moment --save  在package.json查看(moment插件安装成功) 在VueJS部分导入moment import moment...日期格式化 官网给出几种情况(都是当前日期,若指定日期date, moment(date).format()) # 精确毫秒 moment().valueOf() ## 1584182611042...().endOf('month') 获取当月第一天是星期几: # 用于设置星期几,其中星期日为 0、星期六为 6 moment().startOf('month').day() 获取前n天 / 后n天...当然现实很少有这样需求 moment(date).format('YYYY~MM~DD HH+mm:ss') 项目中日期快捷选择:今日、昨日、本周、 上周、 本月、 上月、 本年、 去年 //

    13.1K20

    JavaScript基础08--内置方法

    Date 实例用来处理日期和时间使用Date实例化日期对象 获取当前时间必须实例化 获取指定时间日期对象var now = new Date();var future = new Date...2020console.log(date.getMonth() + 1); //月份 返回月份小1个月,记得月份加1呦console.log(date.getDate()); //返回是 几号console.log...(date.getDay); //周一返回是1 周六返回是6 周日返回是0//我们写一个 2020年 9月 6日 星期日var year = date.getFullYear();var month...}console.log("今天是" + year + "年" + month + "月" + dates + "日" + day);//格式化日期 时分秒var date = new Date();console.log...简单写可以这么做 (最常用)var now = + new Date();// 3. HTML5提供方法,有兼容性问题var now = Date.now();倒计时案例 :1.

    29310

    MySQL中日期和时间函数学习--MySql语法

    %W 工作日名称 (周日..周六) %w 一周每日 (0=周日..6=周六) %X 该周年份,其中周日为每周第一天, 数字形式,4位数;和%V同时使用 %x 该周年份,其中周一为每周第一天...这同SYSDATE()运行有所不同。 PERIOD_ADD(P,N) 添加 N 个月至周期P (格式为YYMM 或YYYYMM),返回值格式为 YYYYMM。注意周期参数 P 不是日期值。...其意义是,例如, 只要具体日期部分范围时 1 31之间,则允许一个日期具体日期部分大于一个月中天数值。并且,允许“零”日期或带有0值部分日期。...假如你向UNIX_TIMESTAMP()传递一个溢出日期,它会返回 0,但请注意只有基本范围检查会被履行 (年份1970 2037, 月份0112,日期 01 31)。...WEEK() 双参数形式允许你指定该星期是否起始于周日或周一, 以及返回值范围是否为0 53 或1 53。

    1.9K40

    crontab 详细用法 定时任务

    以一下格式添加一行: 分钟 小时 天 月 星期 命令 比如 10 3 * * 0,6 hello 就是每周六周日3点10分执行hello程序。...15 4 * * 4-6 hello 就是周四周六4点15点执行hello程序。 然后用 contab contabs.tmp 命令导入新配置。...10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每周六周日1 : 10重启apache。...时程格式如下 : f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月第几日,f4 表示月份,f5 表示一个星期中第几天。...a 第 b 小时都要执行,其馀类推 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 当 f1 为 a, b, c,...

    1.4K20

    小案例(六):预测小偷行为(python)

    案件回顾 杂货店屡遭贼 杂货店遭小偷情况严重 现有8个月内,每天失窃纪录 偷窃者有老顾客家属和学生,店主希望能防患于未然(问题:失窃是否有规律?怎样运用规律堤防盗贼?)...10月份失窃图可以看出,失窃数额呈现似有似无周期性波动:1号,15号,29号失窃数额激增,相隔皆为14天,且都是周三,但是10号和23号也出现失窃小高峰。...,得到如下结果: 数额 损失 date 活动日 周一 周三 周二 周五 周六 周四 周日 0 2362 1 1 1 1 0 1 1 1 1 1 1 1315 0 2 1 1 1 1 1 1 0 1...函数执行逻辑回归,其中“损失”为要预测变量,“活动日”及周一周六数据作为解释变量,为了避免多重共线性,这里不使用“周日”列。...对已有数据进行分析结果显示,两所学校学生与杂货店失窃有关,但这个判断结果只是根据手头数据得到,可能存在某盗窃团伙专门在隔周周三作案但是我们不知道,也就是说解释变量一开始就选错了,因此解释变量选择对结果有很大影响

    2.5K70

    SQL Server 时间函数

    ,date) 返回日期date,interval指定部分所对应整数值 DateName (interval,date) 返回日期date,interval指定部分所对应字符串名称 其中DatePart...Wk ww 周,一年第几周 0 ~ 51 Hour Hh h 时0 ~ 23 Minute Mi n 分钟0 ~ 59 Second Ss s 秒 0 ~ 59 Millisecond Ms -...1,周六为7) DatePart('d','2005-7-25 22:56:32')返回值为 25即25号 DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年第...-2-2,然后格式化数据库日期 Convert(varchar(10),TimeFiled,120),最后我们就可以用一条Sql语句得到当天数据了....====================================================== T-Sql查找当月记录 思路:将要查找时间字段用Month()函数取出其中月份,然后再取出当前月月份

    2.8K60

    PowerBI中短小而强悍相对日期切片器

    在Power BI中使用日期切片器时,选择使用相对日期是很方便。在很多业务场景,我们总是要查看过去n天/n周/n情况。 尤其是选择n情况,在周分析时非常有用。...以前我们要查看最近三周对比,比如在5月10号这天,我可能要手动选择4月20日-5月10日: 不过,到了第二天,我们很明显要看是4月21日5月11数据,那么就得手动修改报告了,更何况如果是发布云端...这里需要注意是,有个小bug,系统默认周(日期)是周日开始计算。...所以只能重新修订一下日期,将周日作为一周第一天,再来看结果,就对了: 但是这样确实不太方便,不符合业务逻辑。 那怎么办呢?...不过,最近在使用时,遇到一个小问题: 比如我选择是对比过去三个星期,今天早晨8点钟之前,日期范围是三周以前4月20日5月10号,而过了8点之后,日期范围又变成4月21日5月11日了。

    1.5K20

    小知识点--crontab

    -r:/var/spool/cron目录删除某个用户crontab文件,如果不指定用户,则删除当前用户crontab文件。...: 表示分钟,可以是059之间任何整数。...hour:表示小时,可以是023之间任何整数,0代着0点。 day:表示日期,可以是131之间任何整数,即为一个月某一天。 month:表示月份,可以是112之间任何整数。...week:表示星期几,可以是07之间任何整数,这里0或7代星期日。 command:要执行命令,可以是系统命令,也可以是自己编写脚本文件。...4.每周六或者周日4:45 ping一下百度 45 4 * * 6,0 ping www.baidu.com 5.每周一18 : 00至23 : 00之间每隔30分钟执行python -h

    60420

    Power BI分解销售目标

    制定销售目标是销售起点。销售目标的完成来自于每一天跟进。因此,在零售等诸多业务,有必要把销售目标分解天。 目标分解一个难点在于,每天都是不一样。...我们使用销售权重系数(概念来源于黄成明老师《数据化管理》)方法可以赋予周一周日每天不同权重,将以上因素都考虑,使得目标分解更加合理。...有需求读者对本文内容进行少许变更,即可对一些特殊日期进行特殊处理。...1.计算周一周日每天销售系数 ---- 首先,将过去一年每天销售数据导入Power BI(或Excel Power Query),使用添加列方式加上星期。...,周六周日为销售高峰,分到最多目标。

    2.3K30

    Pandas 2.2 中文官方教程和指南(二十一·三)

    ]选择将按列而不是按行进行,参见索引基础知识。...将周六移至周一,周日/周一移至周二 previous_friday 将周六周日移至上一个星期五” next_monday 将周六周日移至下一个周一 假期和假期日历如何定义示例: In [259...作为一个有趣例子,让我们看一下埃及,那里观察周五至周六周末。...在这种情况下,营业时间超过午夜并且重叠第二天。有效营业时间由是否有效 BusinessDay 开始来区分。...将周六移动到周一,周日/周一移动到周二 previous_friday 将周六周日移动到上一个星期五” next_monday 将周六周日移动到下一个周一 定义假期和假日日历示例: In [259

    19600

    PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】

    分享给大家供大家参考,具体如下: 时间函数是PHP里面的日常函数,时间默认时期,今天、昨天、明天 、上一周、下一周,本周开始时间和结束时间;本月开始时间结束时间;上月开始时间结束时间,指定日期周一和周日等等方法...<hr '; //上个月开始日期 $m = date('Y-m-d', mktime(0,0,0,date('m')-1,1,date('Y'))); //上个月共多少天 $t = date('t',...//PHP手册上有一个这个方法,用来返回指定日期周一和周日 function get_week_range2($week, $year){ $timestamp = mktime(1,0,0,1,1...例如2011年12月31日周六和2012年1月1日周日,拿到周一和周日完全不同 2011年12月31日拿合到周一和周日分别对应 2011-12-26 2012-01-01 但2012年1月1...日拿 周一和周日分别对应 2012-01-02 2012-01-04 原因为传进去方法周为第53周,但是年为2011年,所以认为2011第53周,所以计算有误,解决方法为, 如果周为大于10

    4.4K31

    你真的会玩SQL吗?实用函数方法汇总

    :"aaa" rtrim :使用 LTRIM 删除字符变量前导空格 ; RTRIM 删除字符变量尾随空格 rtrim(ltrim(splitdata)) -- 用select into 把数据放到临时...(year,1,@dtBeginDate)) 高能预警 DATEPART ( datepart , date ) datepart函数中一周是周日周六,而我们通常认为一周是周一周日 返回表示指定日期指定日期部分整数...: SELECT DATEADD(day,-DATEPART(weekday,getdate())-5,getdate()) 得到上周日日期: SELECT DATEADD(day,-DATEPART...(weekday,getdate())+1,getdate()) 得到上个月月末日期: SELECT dateadd(day,-datepart(day,getdate()),getdate()) 上月第一天...truncate命令不但会清除所有的数据,还会将IDENTITYSEED值恢复原是值。

    1.3K90
    领券