日期推算处理总结
来源:互联网 发布:superworks软件收费么 编辑:程序博客网 时间:2024/04/28 17:49
--日期推算处理总结
DECLARE @DATE DATETIME-- 日期参数
SET @DATE = '2007-03-26'
--1:年
--指定日期所在该年的第一天
SELECT YearFirstDay=CONVERT(CHAR(5),@DATE,120)+'1-1'
--指定日期所在该年的最后一天
SELECT YearLastDay=CONVERT(CHAR(5),@DATE,120)+'12-31'
--2:季度
--指定日期所在该季度的第一天〔当前月份减(0或1或2)即所要季度的第一个月,然后再加日(1)〕
SELECT QuarterFirstDay=CONVERT(DATETIME,
CONVERT(CHAR(8),
DATEADD(MONTH,
DATEPART(QUARTER,@DATE)*3-MONTH(@DATE)-2
,@DATE)
,120)
+'1')
--指定日期所在该季度的最后一天〔当前月份加(0或1或2)即所要季度的最后一个月,然后再加日(31或30)〕
--(CASE判断法)
SELECT QuarterLastDay=CONVERT(DATETIME,
CONVERT(CHAR(8),
DATEADD(MONTH,
DATEPART(QUARTER,@DATE)*3-MONTH(@DATE)
,@DATE)
,120)
+CASE WHEN DATEPART(QUARTER,@DATE) IN (1,4) THEN '31' ELSE '30' END)
--直接推算法〔下一个季度的第一个月的第一天减日(1)〕
SELECT QuarterLastDay=DATEADD(DAY,-1,
CONVERT(CHAR(8),
DATEADD(MONTH,
1+DATEPART(QUARTER,@DATE)*3-MONTH(@DATE)
,@DATE)
,120)
+'1')
--3:月
--指定日期所在月份的第一天
SELECT MonthFirstDay=CONVERT(DATETIME,CONVERT(CHAR(8),@DATE,120)+'1')
--指定日期所在月份的最后一天〔下个月的第一天减日(1)〕
SELECT MonthLastDay=DATEADD(DAY,-1,CONVERT(CHAR(8),DATEADD(MONTH,1,@DATE),120)+'1')
--4:周
--指定日期所在周的任意一天
DECLARE @Number INT --周的第几天
SET @Number = 6
SELECT WeekAnyDay=DATEADD(DAY,@Number-DATEPART(WEEKDAY,@DATE),@DATE)
--5:星期
--指定日期所在周的任意星期几
DECLARE @NUM INT--星期几
SET @NUM = 4
SELECT WeekDay=DATEADD(DAY,
@NUM-(DATEPART(WEEKDAY,@DATE)+@@DATEFIRST-1)%7,@DATE)
DECLARE @DATE DATETIME-- 日期参数
SET @DATE = '2007-03-26'
--1:年
--指定日期所在该年的第一天
SELECT YearFirstDay=CONVERT(CHAR(5),@DATE,120)+'1-1'
--指定日期所在该年的最后一天
SELECT YearLastDay=CONVERT(CHAR(5),@DATE,120)+'12-31'
--2:季度
--指定日期所在该季度的第一天〔当前月份减(0或1或2)即所要季度的第一个月,然后再加日(1)〕
SELECT QuarterFirstDay=CONVERT(DATETIME,
CONVERT(CHAR(8),
DATEADD(MONTH,
DATEPART(QUARTER,@DATE)*3-MONTH(@DATE)-2
,@DATE)
,120)
+'1')
--指定日期所在该季度的最后一天〔当前月份加(0或1或2)即所要季度的最后一个月,然后再加日(31或30)〕
--(CASE判断法)
SELECT QuarterLastDay=CONVERT(DATETIME,
CONVERT(CHAR(8),
DATEADD(MONTH,
DATEPART(QUARTER,@DATE)*3-MONTH(@DATE)
,@DATE)
,120)
+CASE WHEN DATEPART(QUARTER,@DATE) IN (1,4) THEN '31' ELSE '30' END)
--直接推算法〔下一个季度的第一个月的第一天减日(1)〕
SELECT QuarterLastDay=DATEADD(DAY,-1,
CONVERT(CHAR(8),
DATEADD(MONTH,
1+DATEPART(QUARTER,@DATE)*3-MONTH(@DATE)
,@DATE)
,120)
+'1')
--3:月
--指定日期所在月份的第一天
SELECT MonthFirstDay=CONVERT(DATETIME,CONVERT(CHAR(8),@DATE,120)+'1')
--指定日期所在月份的最后一天〔下个月的第一天减日(1)〕
SELECT MonthLastDay=DATEADD(DAY,-1,CONVERT(CHAR(8),DATEADD(MONTH,1,@DATE),120)+'1')
--4:周
--指定日期所在周的任意一天
DECLARE @Number INT --周的第几天
SET @Number = 6
SELECT WeekAnyDay=DATEADD(DAY,@Number-DATEPART(WEEKDAY,@DATE),@DATE)
--5:星期
--指定日期所在周的任意星期几
DECLARE @NUM INT--星期几
SET @NUM = 4
SELECT WeekDay=DATEADD(DAY,
@NUM-(DATEPART(WEEKDAY,@DATE)+@@DATEFIRST-1)%7,@DATE)
- 日期推算处理总结
- 日期推算处理
- MSSQL日期推算处理
- 日期推算处理
- 日期推算
- 日期推算
- 日期推算
- MySql日期处理系列-常用的日期推算处理
- 日期的推算
- SQL日期推算...
- 本周日期推算
- 日期的推算
- 日期推算问题
- 根据日期推算星期
- 日期的推算:
- java 日期推算
- JavaScript推算日期
- JAVA 日期推算---算法
- 对字母数字混合的数据排序
- .net中前台javascript与后台c#相互调用
- 利用鼠标键盘钩子截获密码
- 肥肥
- 大写数字
- 日期推算处理总结
- linux下fdisk工具分区使用
- 通用对话框专题之颜色对话框
- 单播,广播,组播
- 关键链方法和传统关键路径方法的比较
- 指针数组和数组指针(C)
- 把一个动态库改成静态编译库时提示MSVCRTD.lib已经在××中编译过的错误的解决办法
- 关键链方法的多项目监控技术
- udp 广播与组播