sql日期天数-萤火虫
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> ADP及SQL SERVER


sql日期天数

发表时间:2018/6/8 9:01:21 评论(0) 浏览(4077)  评论 | 加入收藏 | 复制
   
摘 要:这个问题我曾还发贴求助过
正 文:
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群(群号:198465573)
 
 相关文章
【access源码示例】测算星期周数的初始日期与末尾日期\判断第几...  【红尘如烟  2011/11/12】
本年年初与年末日期\当年的第一天与最后一天\本年本月第一天与本月最...  【红尘如烟  2012/4/5】
【Access自定义函数】取得指定月份星期天个数示例,获取当月的星...  【麥田  2014/6/19】
【Access自定义函数】取得指定月份天数示例,获取当月天数  【麥田  2014/6/28】
Access基础--天数日期相加减示例,DateAdd时间函数应用  【杜超  2017/2/3】
【Access NZ函数示例】统计两个日期间的天数(空白日期为当天...  【麥田  2017/10/27】
修正【自定义函数】取得指定日期指定工作日天数后的工作日期  【123木头人  2017/11/20】
【Access源码示例】来年年初与年末日期,下一年的第一天与最后一...  【麥田  2018/4/14】
【Access源码示例】去年年初与年末日期,上一年的第一天与最后一...  【麥田  2018/4/17】
DateDiff计算两个日期间的天数  【雨泉  2018/4/27】
常见问答
技术分类
相关资源
文章搜索
关于作者

萤火虫

文章分类

文章存档

友情链接