Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > ADP及SQL SERVER

sql日期天数

时 间:2018-06-08 09:01:21
作 者:萤火虫   ID:66752  城市:大理
摘 要:这个问题我曾还发贴求助过
正 文:

DECLARE @dt datetime
SET @dt=GETDATE()


DECLARE @number int
SET @number=3


--1.指定日期该年的第一天或最后一天
--A. 年的第一天
Select CONVERT(char(5),@dt,120)+'1-1'


--B. 年的最后一天
Select CONVERT(char(5),@dt,120)+'12-31'




--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天
Select CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt)-2,
@dt),
120)+'1')


--B. 季度的最后一天(CASE判断法)
Select CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)
+CASE WHEN DATEPART(Quarter,@dt) in(1,4)
THEN '31'ELSE '30' END)


--C. 季度的最后一天(直接推算法)
Select DATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
1+DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)+'1')




--3.指定日期所在月份的第一天或最后一天
--A. 月的第一天
Select CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')


--B. 月的最后一天
Select DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')


--C. 月的最后一天(容易使用的错误方法)
Select DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))




--4.指定日期所在周的任意一天
Select DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)




--5.指定日期所在周的任意星期几
--A.  星期天做为一周的第1天
Select DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)


--B.  星期一做为一周的第1天
Select DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助