原文转载链接找不着了。
以下问转载内容:
第一种:
--获取当前日期是本月的第几周 --测试:select dbo.getMonthWeek(getdate()) 结果:10月的第2周 CREATE function [dbo].[getMonthWeek](@d datetime) returns varchar(20) as begin declare @returns varchar(20), @monthfirstDay datetime, @firstMondy datetime select @monthfirstDay=left(convert(varchar,@d,23),7)+'-01' if not exists(select 1 from master.dbo.spt_values where type=N'P' and number between 0 and datediff(d,@monthfirstDay,@d) and datepart(dw,dateadd(d,number,@monthfirstDay))=2) begin select @monthfirstDay=dateadd(mm,-1,@monthfirstDay) end ;with t as(select 'days'=dateadd(d,number,@monthfirstDay) from master.dbo.spt_values where type=N'P' and number<=7) select @firstMondy=min([days]) from t where datepart(dw,[days])=2 select @returns=rtrim(datepart(mm,@monthfirstDay))+'月的第'+rtrim(datediff(d,@firstMondy,@d)/7+1)+'周' return @returns end
第二种:
--获取当前日期是本月的第几周 --测试:select dbo.WeekOfMonth(getDate());结果:2 CREATE FUNCTION [dbo].[WeekOfMonth](@day datetime) RETURNS int AS begin ----declare @day datetime declare @num int declare @Start datetime declare @dd int declare @dayofweek char(8) declare @dayofweek_num char(8) declare @startWeekDays int ---set @day='2009-07-05' if datepart(dd,@day)=1 return 1 else set @Start= (SELECT DATEADD(mm, DATEDIFF(mm,0,@day), 0)) --一个月第一天的 set @dayofweek= (datename(weekday,@Start)) ---得到本月第一天是周几 set @dayofweek_num=(select (case @dayofweek when '星期一' then 2 when '星期二' then 3 when '星期三' then 4 when '星期四' then 5 when '星期五' then 6 when '星期六' then 7 when '星期日' then 1 end)) set @dayofweek_num= 7-@dayofweek_num+1 ---得到本月的第一周一共有几天 ---print @dayofweek_num set @dd=datepart(dd,@day) ----得到今天是这个月的第几天 --print @dd if @dd<=@dayofweek_num --小于前一周的天数 return 1 else set @dd=@dd-@dayofweek_num if @dd % 7=0 begin set @num=@dd / 7 return @num+1 end else --if @dd % 7<>0 set @num=@dd / 7 set @num=@num+1+1 return @num end
相关推荐
SQLserver代理已经启动了,服务里的SQLServerAgent响应服务也已经开启了 但是启动作业的时候还是提示“错误22022:SQLServerAgent当前未运行,因此,无法就本操作对其进行提示。” 有高人遇到过这个问题吗? 怎么...
sqlserver中得到当前日期sqlserver中得到当前日期
SQL Server 2005 ETL专家系列之一:SQL Server DTS的前世今生 SQL Server 2005 ETL专家系列之二:SQL Server 2005 Integration Service的基本任务 SQL Server 2005 ETL专家系列之三:SQL Server 2005 Integration ...
sqlserver获取当前时间并只需要年月日小时,使用GETDATE和convert函数达到目的
SQL Server 2000完结篇系列之十:SQL Server 2000性能优化答疑
sql server日期格式转换方法大全
SQL Server 2000完结篇系列之七:SQL Server 2000索引优化详解
time: 返回的时间点,如果时间点为8点,返回的结束时间为第二天的8点,例如获取8月最后一天的结束时间,以8点计,则返回值为 2022-09-01 07:59:59.997 select dbo.GetDateStartFirstAndLast('-q','s','2022-08-03',...
SQL Server 2000完结篇系列之八:SQL Server 2000过程优化详解
SQL Server 2005 ETL专家系列之四:SQL Server 2005 Integration Service的扩展能力 讲师信息:陈亮 2007年03月19日 14:00-15:30 Level: 200 为什么会出问题呢?包在执行过程中究竟发生了什么事情?这些异常我又...
SQL Server 2008抢先看系列:SQL Server 2008 T-SQL新特性,介绍sql server 2008 的一些新的特性。
SQL Server 2008抢先看系列:SQL Server可管理性
SQL Server 2008开发新特性系列课程(4):SQL Server可管理性
sqlserver 计算当月所有自然周的区间。
SQL Server 2005 ETL专家系列之一:SQL Server DTS的前世今生 讲师信息:陈亮 2007年03月08日 14:00-15:30 Level: 100 SQL Server 2005 Integration Service随SQL Server 2005发布已经有近一年了,那么这一服务...
奉上2本SQL Server教程:SQLServer+Microsoft SQL Server超级管理手冊 奉 上 2 本 SQL Server 教 程:SQLServer+Microsoft SQL Server 超 级 管 理 手 冊
Sqlserver盲注 Sqlserver盲注 1、SQL盲注 什么是SQL盲注? SQL盲注就是在 sql 注入过程中,sql 语句执行的选择后,选择的数据不能回显 到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注...
SqlServer日期转换 能够将sql server 的日期类型 以不用表示格式进行输出显示
第05节:SQLServer触发器Demo源代码.rar
SQL Server 2008抢先看系列:SQL Server 2008的商务智能平台概述