求某段时间内星期几的天数

/*

**********************************************

Program ID: FUN_GetDaysOfWeek

Purpose   : 求某段时间内某一星期日期的天数

Author    : Jesse

Date      : 2011.02.19

**********************************************

*/

Go

Create Function dbo.FUN_GetDaysOfWeek(

@DateS smalldatetime,--开始时间

@DateE smalldatetime,--结束

@WeekValue int)      --星期的某一天:-周日、-周一...7-周六

Returns nvarchar(100)

As

Begin

declare

@sResult nvarchar(100),    --结果描述

@nResult int,              --结果天数

@nWeekValue int,           --起始日期是星期几(1-周日、-周一...7-周六)

@nDays int,                --时间段内的天数

@nBeforeDays int,          --起始日期到第一次相符日期的天数

@sWeekName varchar(20),    --所求日期的星期名称

@tmpDate smalldatetime

set @[email protected] % 7

if @WeekValue=0

set @WeekValue=7

--如果起始日期大于终止日期,则对换

if @DateS>@DateE

select @[email protected],@[email protected],@[email protected]

--取得起始日期的星期数,与设置无关(1-周日、-周一...7-周六)

select @nWeekValue=(Datepart(dw,@DateS)+(@@Datefirst %7))%7

if @nWeekValue=0

set @nWeekValue=7

set @sWeekName=DateName(dw,DateAdd(d,@[email protected],@DateS))

if @WeekValue>[email protected]

set @[email protected]@nWeekValue

else

set @nBeforeDays=7-abs(@[email protected])

--取得时间段内的天数

select @nDays=Datediff(d,@DateS,@DateE)+1

if @nDays<@nBeforeDays

select @nResult=0

else

select @nResult=ceiling((@[email protected])/7.0)

set @sResult=N‘日期区间:‘+ convert(varchar(10),@DateS,120)+ N‘ 到‘ +convert(varchar(10),@DateE,120) +‘ 之间‘

[email protected] +N‘ 共有‘+cast(@nResult as varchar(100))+N‘ 天‘

Return @sResult

end

go

--测试示例

select dbo.FUN_GetDaysOfWeek(‘2011-03-01‘,‘2011-05-31‘,1)

--运行结果

/*

日期区间:2011-03-01 到2011-05-31 之间Sunday 共有13 天

*/

时间: 2024-08-05 19:33:05

求某段时间内星期几的天数的相关文章

MySql 求一段时间范围内的每一天,每一小时,每一分钟

平常经常会求一段时间内的每一天统计数据,或者每一时点的统计数据.但是mysql本身是没有直接获取时点列表的函数或表.下面是自己用到的一些方法,利用临时变量和一个已存在的比较多数据(这个需要根据实际情况决定)的表做关联得到时点列表.希望对大家有所帮助. sql中用到的一些关键数据 #t_table表是系统上已存在的一个有比较多数据的表 一个月的每一天 #2017年7月份的每一天 SET @beginDate='2017-07-01'; SET @maxDate ='2017-07-31'; SEL

循环-01. 求整数段和

循环-01. 求整数段和(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆(浙江大学城市学院) 给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中-100<=A<=B<=100,其间以空格分隔. 输出格式: 首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐.最后在一行中输出全部数字的和. 输入样例: -3 8 输出样例

循环-01. 求整数段和(15)

给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中-100<=A<=B<=100,其间以空格分隔. 输出格式: 首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐.最后在一行中输出全部数字的和. 输入样例: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner ci

*循环-01. 求整数段和【help】

1 /* 2 * Main.c 3 * 循环-01. 求整数段和 4 * Created on: 2014年6月18日 5 * Author: Boomkeeper 6 ***测试木有通过**** 7 */ 8 9 #include <stdio.h> 10 #include <stdlib.h> 11 12 int main() 13 { 14 int a,b,sum; 15 scanf("%i %i",&a,&b); 16 17 if(a&g

求两条线段交点zz

"求线段交点"是一种非常基础的几何计算, 在很多游戏中都会被使用到. 下面我就现学现卖的把最近才学会的一些"求线段交点"的算法说一说, 希望对大家有所帮助. 本文讲的内容都很初级, 主要是面向和我一样的初学者, 所以请各位算法帝们轻拍啊 嘎嘎 引用 已知线段1(a,b) 和线段2(c,d) ,其中a b c d为端点, 求线段交点p .(平行或共线视作不相交) =============================== 算法一: 求两条线段所在直线的交点, 再判

求两个日期之间间隔的天数,Python实现

代码如下 1 def leap_year(y): #判断是否是闰年 2 if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0: 3 return True 4 else: 5 return False 6 7 def days_in_month(y, m): #判断每个月都有几天 8 if m in [1, 3, 5, 7, 8, 10, 12]: 9 return 31 10 elif m in [4, 6, 9, 11]: 11 return 30

L1-008. 求整数段和

L1-008. 求整数段和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆 给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中-100<=A<=B<=100,其间以空格分隔. 输出格式: 首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐.最后在一行中输出全部数字的和. 输入样例: -3 8 输出样例: -3 -2 -1 0

[算法]求一段包含所有种类的字符子串

有一个字符串首尾相连(m个字符),有n种字符组成,求一段能使包含n种字符的子串,并使长短最短,时间复杂度要求O(n),空间复杂度O(1) #include <cstring>int foo(const char* str, int m, int n){ int hit[256], count = 0, begin = 0, end, len = m; memset(hit,0,256*4); int j; for(j = 0; j < m && count < n;

oracle获取一段时间内所有的小时、天、月

获取一段时间内所有的小时 SELECT to_date('2013-07-01 12', 'yyyy-mm-dd hh24') + (ROWNUM - 1) / 24 sdate FROM dual CONNECT BY ROWNUM <= (to_date('2013-07-02 22', 'yyyy-mm-dd hh24') - to_date('2013-07-01 12', 'yyyy-mm-dd hh24')) * 24 + 1; 获取一段时间内所有的天 SELECT to_date(