sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数

sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数,第1张

drop function dbof_get_workdays

go

CREATE FUNCTION dbof_get_workdays(@bdate DATETIME, @edate DATETIME)

  RETURNS INTEGER

AS BEGIN

  DECLARE @workdays INTEGER

  IF  @bdate > @edate

    RETURN -1

  SELECT @workdays =

         --如果终止日期与起始日期在同一个星期内,只需要计算有几天即可

         CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN

                   CASE WHEN DATEPART(dw, @bdate) > 5 THEN 0

                        WHEN DATEPART(dw, @edate-1) > 5 THEN 6 - DATEPART(dw, @bdate)

                        ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END

              --如果终止日期与起始日期在不同的星期内

              --首先计算出除前后两个星期外完整的星期数  5

              ELSE (DATEDIFF(dd,@bdate,@edate)

                          - (8-DATEPART(dw, @bdate))

                          - DATEPART(dw, @edate-1)) / 7  5

                   --再加上第一个星期里的工作日数

                 + CASE WHEN DATEPART(dw, @bdate) < 6 THEN 6 - DATEPART(dw, @bdate)

                        ELSE 0 END

                   --加上末一个星期里的工作日数

                 + CASE WHEN DATEPART(dw, @edate-1)>5 THEN 5 ELSE DATEPART(dw, @edate-1) END

         END 

  RETURN @workdays 

END

go

select dbof_get_workdays(dateadd(day,-21,getdate()),getdate())

那么你的数据表中需要有个字段是数据添加的时间,而且最好是时间戳格式,也就是10位的数值。然后查询的时候可以用时间间隔的where条件来查询,例如要查询2015年第22周,那么开始时间就是2015年1月1日的时间戳+21604800,因为一周是604800秒,所以用21乘以604800,这样得到开始时间,那结束时间就是开始时间再加604800秒,查询的时候语句就是select from 数据表 where 时间戳字段>开始时间 and 时间戳字段<结束时间; 这样就可以查到了。

很抱歉楼上你给的代码是错误的。。

//这里把星期天当作一周的开始

ConsoleWriteLine(

"本周起始日期:{0},结束日期:{1}",

DateTimeNowAddDays(-(int)DateTimeNowDayOfWeek)ToShortDateString(),

DateTimeNowAddDays(6-(int)DateTimeNowDayOfWeek)ToShortDateString());

ConsoleWriteLine(

"本月共 {0} 天,起始日期:{1},结束日期:{2}",

DateTimeDaysInMonth(DateTimeNowYear, DateTimeNowMonth),

DateTimeNowAddDays(1 - DateTimeNowDay)ToShortDateString(),

DateTimeNowAddDays(DateTimeDaysInMonth(DateTimeNowYear, DateTimeNowMonth) - DateTimeNowDay)ToShortDateString()

);

首先要和用户确定一周是从周几开始,不同地区可能不一样。也可以做在配置文件里可设置。

从起始周几开始编码1~7,得到周一的编码值,

获取系统当前日期,取得当前日期是周几,当前周几转换成编码,

当前日期 -(当前周几编码-周一编码)即为本周一日期。

您好,方法

1、首先咱们输入日期,周几可以通过设置单元格格式的方式得出,所以可以把日期复制到周几那一栏;

2、选中这一栏,在列标处或选中的单元格处右键,选择单元格格式,或者直接按住ctrl+1;选择日期,在右侧选择周几或者星期几,点击确定;

3、下面是效果图;

4、下面看怎么获取周数;这一栏单元格格式一般是常规才好;输入公式:=WEEKNUM(A2),A2替换成你的日期所在的单元格名称,一般显示在excel正文区左上角;

5、然后得出周数;

6、公式写完之后,可以采取下拉填充的方式,或者双击填充,补充完整列;下拉就是鼠标悬浮在在写公式的单元格右下角黑方块处,直接下拉即可,双击就是鼠标变成黑十字,双击即可。

您好,您问的是VBS查询周几?VBS(Visual Basic Script)是一种脚本语言,它可以用来查询周几。您可以使用VBS脚本来查询任何一天是周几,您只需要输入一个日期,然后VBS脚本就可以自动查询出该日期是周几。例如,您可以使用VBS脚本来查询2020年1月1日是周三。VBS脚本还可以用来查询任何一个月的第一天是周几,您只需要输入一个月份,然后VBS脚本就可以自动查询出该月份的第一天是周几。例如,您可以使用VBS脚本来查询2020年2月的第一天是周四。总之,VBS脚本可以用来查询任何一天或者任何一个月的第一天是周几,您只需要输入相应的日期或者月份,然后VBS脚本就可以自动查询出该日期或者月份的第一天是周几。

以上就是关于sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数全部的内容,包括:sqlserver 写一个函数,能获取两个日期之间的周一到周五的总天数、mysql给定一年中的第几周,输出这一周的日期、如果根据当前日期获取当前周日期和当前周日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9721707.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存