sql server 中获取日期 相关信息的语句

-- 声明各变量
declare @date datetime,@yearStr char(4),@monthStr char(2),@weekOfMonth int,@howManyDaysAgoIsMonday int,@Monday datetime,
		@monthFirstDay datetime,@nextMonthFirstDay datetime,@monthLastDay datetime,@weekStartDay char(5),
		@howManyDaysAgoThisMonthFirstDayIsMonday int,@weekCountOfMonth int
-- 设置初始日期
set @date = '2019-3-23'
-- 获取日期年份字符串        
set @yearStr = cast(year(@date) as char(4))
-- 获取日期月份字符串
set @monthStr = cast(month(@date) as char(2))
-- 获取该月第一天日期
set @monthFirstDay = dateadd(day,1-day(@date),@date)
-- 获取该月第一天多少天之前是星期一
set @howManyDaysAgoThisMonthFirstDayIsMonday = 1-datepart(dw,@monthFirstDay+@@DATEFIRST-1) 
-- 获取下个月第一天日期
set @nextMonthFirstDay =dateadd(month,1,@monthFirstDay) 
-- 获取该月最后一天日期
set @monthLastDay = dateadd(day,-1,@nextMonthFirstDay)  
-- 获取该月一共有多少周
set @weekCountOfMonth = datepart(wk,@monthLastDay)-datepart(wk,@monthFirstDay)
-- 获取多少天之前是星期一
set @howManyDaysAgoIsMonday = 1-datepart(dw,@date+@@DATEFIRST-1)
-- 获取星期一日期
set @Monday = dateadd(d,@howManyDaysAgoIsMonday,@date)
-- 获取该日期在本月第几周
set @weekOfMonth = datepart(wk,@Monday)-datepart(wk,@monthFirstDay)+1
-- 获取本月第@weekOfMonth周的星期一日期
set @weekStartDay = rtrim(@monthStr)+'/'+ cast(1+(@weekOfMonth-1)*7+@howManyDaysAgoThisMonthFirstDayIsMonday as char(2))

猜你喜欢

转载自blog.csdn.net/caojunzhi96/article/details/88654218