在sql Server自定义一个用户定义星期函数

来源:asp之家 时间:2012-02-12 15:47:28 

文件:.wmv;大小:19,535KB;长度:00:26:39。
下载地址:SqlFunction_udf_Week.rar
以下内容于20120105更新:
2012年刚到,开发的软件使用这个函数发现bug。2012年第一周应该是2012-01-01至2012-01-07,但此函数却把2012-01-08至2012-01-14当作第一周。

就此bug对此函数修改如下: 

代码如下:


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[udf_Week]
(
@StartYear INT,
@EndYear INT
)
RETURNS @Week TABLE([WeekId] INT IDENTITY(1,1) PRIMARY KEY,[Year] [INT] NULL,[Week] [INT] NULL,[StartDate] [DATETIME] NULL,[EndDate] [DATETIME] NULL)
AS
BEGIN
DECLARE @YearStartDate DATETIME
DECLARE @YearEndDate DATETIME
DECLARE @WeekStartDate DATETIME
DECLARE @WeekEndDate DATETIME
DECLARE @Weeks INT

WHILE @StartYear <= @EndYear
BEGIN
SET @YearStartDate = CAST((CAST(@StartYear AS VARCHAR(4)) + '-01-01') AS DATETIME)
SET @YearEndDate= CAST((CAST(@StartYear AS VARCHAR(4))+ '-12-31') AS DATETIME)
SET @Weeks = 1

IF DATEPART(DW,@YearStartDate) > 4
SET @YearStartDate = DATEADD(DAY,(8 - DATEPART(DW,@YearStartDate)) ,@YearStartDate)
ELSE
SET @YearStartDate = DATEADD(DAY,(-(DATEPART(DW,@YearStartDate)-1)),@YearStartDate)

SET @WeekStartDate = @YearStartDate
SET @WeekEndDate = DATEADD(DAY,6,@WeekStartDate)
WHILE DATEDIFF(DAY,@WeekStartDate,@YearEndDate) >= 4
BEGIN
INSERT INTO @Week([Year],[Week],[StartDate],[EndDate]) VALUES (@StartYear,@Weeks,@WeekStartDate,@WeekEndDate)
SET @Weeks = @Weeks + 1
SET @WeekStartDate = @WeekStartDate + 7
SET @WeekEndDate = @WeekEndDate + 7
END
SET @StartYear = @StartYear + 1
END
RETURN
END

标签:星期函数,sql,server
0
投稿

猜你喜欢

  • python判断列表的连续数字范围并分块的方法

    2021-01-18 12:04:19
  • 在Vue中配置代理服务器的方法详解

    2024-04-30 10:22:10
  • sql存储过程获取汉字拼音头字母函数

    2011-11-03 16:58:05
  • 如何恢复MYSQL的ROOT口令

    2008-06-02 13:59:00
  • 浅谈Python数学建模之线性规划

    2021-02-11 17:57:35
  • 用Python编写生成树状结构的文件目录的脚本的教程

    2022-12-26 09:54:52
  • GoLang并发机制探究goroutine原理详细讲解

    2023-08-30 05:41:33
  • python实现通讯录管理系统

    2022-01-31 08:25:31
  • ASP技巧:Script块不能放在另一个Script 块内

    2009-08-19 17:17:00
  • oracle ORA-01114、ORA-27067错误解决方法

    2023-07-15 18:36:39
  • Python判断字符串是否为合法标示符操作

    2023-09-28 18:49:01
  • ASP获取当前页面URL地址(带参数)的方法

    2010-01-14 19:40:00
  • Windows环境下python环境安装使用图文教程

    2023-12-25 10:13:26
  • Python之时间和日期使用小结

    2021-01-11 09:33:21
  • Python如何省略括号方法详解

    2022-12-11 07:23:26
  • 神经网络(BP)算法Python实现及应用

    2021-11-12 20:00:14
  • python安装pywifi全过程

    2023-05-25 22:59:29
  • asp中用insert into语句向数据库插入记录(添加信息)的方法

    2011-02-05 10:46:00
  • python一行代码合并了162个Word文件

    2022-07-24 04:20:57
  • pytorch实现从本地加载 .pth 格式模型

    2021-07-01 18:32:03
  • asp之家 网络编程 m.aspxhome.com