《(完整版)与日期有关sql大全》由会员分享,可在线阅读,更多相关《(完整版)与日期有关sql大全(4页珍藏版)》请在金锄头文库上搜索。
1、(完整版)与日期有关 sql 大全1. 与日期有关 sql 大全2.-本周第一天3。SELECT DATEADD(Day,1-(DATEPART(Weekday,getdate()+DATEFIRST-1)7,getdate()4.or5。select dateadd(wk, datediff(wk,0,getdate()), 0)6.-本周第一天7。select dateadd(wk, datediff(wk,0,getdate(), 6)8。9。-上月第一天10.SELECT CONVERT(CHAR(10), DATEADD (month, -1,DATEADD(dd,DAY (GETD
2、ATE () )+1,GETDATE() ) ) ,111)11.-上月最后一天12.SELECT CONVERT(CHAR(10),DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()),0)),111)+ 23:59:5913。-本月第一天14.select dateadd(dd,datepart(dd,getdate())+1,getdate()15.-本月最后一天16。select dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate()17。-本月天数18。select date
3、diff(dd,dateadd(dd,datepart(dd,getdate())+1,getdate()), dateadd(dd,datepart(dd,getdate())+1,dateadd(mm,1,getdate()))19。-or20。select datepart(dd,dateadd(dd,1,dateadd(mm,1,cast(cast(year(getdate() as varchar)+cast(month(getdate()) as varchar)+01 as datetime)))21.22.-下月第一天23。select dateadd(dd,datepart(
4、dd,getdate()+1,dateadd(mm,1,getdate()))24。-下月最后一天25。 SELECT CONVERT (CHAR (10) ,DATEADD (ms, 3, DATEADD(mm,DATEDIFF(m, 0, getdate () )+2, 0) ) ,111)+ 23:59:5926。季度第一天27.SELECT DATEADD(qq, DATEDIFF(qq,0,getdate(), 0)28。-季度最后一天(直接推算法)29。SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Qu
5、arter,getdate()*3Month(getdate(),getdate()),120)+1)30.-季度的最后一天(CASE 判断法)31。select DATEADD(Month,DATEPART(Quarter,getdate())3-Month(getdate()),getdate()32。33。-本月第一个星期一34。SELECTDATEADD(wk, DATEDIFF(wk, , DATEADD(dd, 6 - DAY(getdate(), getdate())), )35.-去年最后一天36。SELECT dateadd(ms,-3,DATEADD(yy, DATEDIF
6、F(yy,0,getdate(), 0))37。-今年第一天38。SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)39。-今年最后一天40.SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()+1,0)41.42。指定日期所在周的任意一天43.SELECT DATEADD(Day,number-DATEPART(Weekday,dt),dt)-5指定日期所在周的任意星期几(完整版)与日期有关 sql 大全44.-A.星期天做为一周的第 1 天45.SELECT DATEADD(Day,nu
7、mber(DATEPART(Weekday,dt)+DATEFIRST-1)%7,dt)46.B。星期一做为一周的第 1 天47.SELECT DATEADD(Day,number-(DATEPART(Weekday,dt)+DATEFIRST-2)7-1,dt)48。-周内的第几日49.select datepart(weekday,getdate() as 周内的第几日50。-年内的第几周51.select datepart(week,getdate()) as 年内的第几周52。年内的第几季53。select datepart(quarter,getdate() as 年内的第几季54。
8、55。56.判断某天是当月的第几周的 sql 函数57.CREATE FUNCTION WeekOfMonth(day datetime)58.RETURNS int59.AS60.begin61。62。declare day datetime63.declare num int64。declare Start datetime65.declare dd int66.declare dayofweek char(8)67.declare dayofweek_num char(8)68.declare startWeekDays int69.-set day=2009-070570。if dat
9、epart(dd,day)=171。return 172。else73。set Start= (SELECT DATEADD(mm, DATEDIFF(mm,0,day), 0)74.set dayofweek= (datename(weekday,Start)) -得到本月第一天是周几75。set dayofweek_num=(select (case dayofweek when 星期一 then 276.when 星期二 then 377.when 星期三 then 478.when 星期四 then 579。when 星期五 then 680。when 星期六 then 781.whe
10、n 星期日 then 182。end)83.set dayofweek_num= 7dayofweek_num+1 -得到本月的第一周一共有几天84.print dayofweek_num85. set dd=datepart(dd,day) -得到今天是这个月的第几天86。print dd87。if dd=dayofweek_num -小于前一周的天数88.return 189.else90。set dd=dddayofweek_num91.if dd 7=0一个月第一天的 -(完整版)与日期有关 sql 大全92. begin93。 set num=dd / 794。 return num
11、+195。96. end97。 else -if dd 7098。99。 set num=dd / 7100.set num=num+1+1101. return num102。end103。104.-常用日期的视图105.SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS today, REPLACE(CONVERT(varchar(8),GETDATE(), 108), :, ) AS time,106. REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120), ,), , ), :, )
12、AS all_date, CONVERT(varchar(12), GETDATE(), 112) AS date,107。 YEAR(GETDATE() AS year, MONTH(GETDATE()) AS month, DAY(GETDATE() AS day, CONVERT(varchar(8), DATEADD(d, - 1, GETDATE(), 112)108。 AS yestaday, CONVERT(varchar(8), DATEADD(d, 1, GETDATE(), 112)AS tomorrow109。FROM110.111。/112。TSQL: 17 个与日期时
13、间相关的自定义函数(UDF),周日作为周的最后一天,均不受 DateFirst、语言版本影响113。提示:114.(Datefirst + datepart(weekday,Date)) % 7 判断周几是最保险的! 与 DateFirst 无关,与语言版本无关115.DateFirst 可能会导致 datepart(weekday,Date) 不一样!116.无论 DateFirst 等于几,无论是什么语言版本的 SQL Server 下面永远恒成立!117.(Datefirst + datepart(weekday,Date))%7 : 2、3、4、5、6、0、1 分别代表 周一 到 周日
14、118.- */119。120.create function udf_GetAge(StartDate datetime,EndDate datetime)121.returns integer122。- 返回精确年龄 select dbo.udf_GetAge(1949-1001,getdate())123.begin124.return datediff(year,StartDate,EndDate)125。 case when datediff(day ,dateadd(year,datediff(year,StartDate,EndDate),StartDate),EndDate)
15、= 0126. then 0127. else128. 1129. end130。end131。132。go(完整版)与日期有关 sql 大全133.134.create function udf_DaysOfYearByDate(Date datetime)135。returns integer136.- 返回年的天数 可判断 平(365)、润(366) 年137。begin138。 return datediff(day,dateadd (year,datediff (year, 0, Date), 0) , dateadd(year, datediff(year,0,Date) + 1,
16、0)139.end140.141.go142。143.create function udf_DaysOfYear(Year integer)144。returns integer145.- 返回年的天数 可判断 平(365)、润(366) 年146。begin147。return datediff(day,dateadd(year,year year(0),0),dateadd(year,year year(0)1,0)148。end149.150。go151.152。create function udf_HalfDay(Date datetime)153.returns datetime154.- 返回 Date 是 上午 返回 Date 的零点,Date 是 下午 返回 Date 的十二点155。begin156.return case when datepart(hour,Date) 12157. then dateadd(day,datediff(day,0,Date),0) 上午归到 零点158。 else159。 dateadd(hour,12,datea +