sql常用的日期函式與應用

2022-03-21 08:12:20 字數 4828 閱讀 4494

--

本週第一天

select

dateadd(day,1

-(datepart(weekday,getdate())+

@@datefirst

-1)%

7,getdate

())

--or

select

dateadd(wk, datediff(wk,0,getdate()), 0

) --

本週第一天

select

dateadd(wk, datediff(wk,0,getdate()), 6

)

--上月第一天

select

convert(char(10),dateadd(month,-

1,dateadd(dd,-

day(getdate())+

1,getdate())),111

) --

上月最後一天

select

convert(char(10),dateadd(ms,-

3,dateadd(mm, datediff(mm,0,getdate()),0)),111)+

'23:59:59'--

本月第一天

select

dateadd(dd,-

datepart(dd,getdate())+

1,getdate

())

--本月最後一天

select

dateadd(dd,-

datepart(dd,getdate()) ,dateadd(mm,1,getdate

()))

--本月天數

select

datediff(dd,dateadd(dd,-

datepart(dd,getdate())+

1,getdate()), dateadd(dd,-

datepart(dd,getdate())+

1,dateadd(mm,1,getdate

())))

--or

select

datepart(dd,dateadd(dd,-

1,dateadd(mm,1,cast(cast(year(getdate()) as

varchar)+'-

'+cast(month(getdate()) as

varchar)+

'-01'as

datetime

))))

--下月第一天

select

dateadd(dd,-

datepart(dd,getdate())+

1,dateadd(mm,1,getdate

()))

--下月最後一天

select

convert(char(10),dateadd(ms,-

3,dateadd(mm,datediff(m,0,getdate())+

2,0)),111)+

'23:59:59'--

季度第一天

select

dateadd(qq, datediff(qq,0,getdate()), 0

)

--季度最後一天(直接推算法)

select

dateadd(day,-

1,convert(char(8),dateadd(month,1

+datepart(quarter,getdate())*3-

month(getdate()),getdate()),120)+'1

')

--季度的最後一天(case判斷法)

select

dateadd(month,datepart(quarter,getdate())*3-

month(getdate()),getdate

())

--本月第乙個星期一

select

dateadd(wk, datediff(wk, '', dateadd(dd, 6

-day(getdate()), getdate())), ''

)

--去年最後一天

select

dateadd(ms,-

3,dateadd(yy, datediff(yy,0,getdate()), 0

))

--今年第一天

select

dateadd(yy, datediff(yy,0,getdate()), 0

)

--今年最後一天

select

dateadd(ms,-

3,dateadd(yy, datediff(yy,0,getdate())+

1,0))

--指定日期所在周的任意一天

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

) --

-週內的第幾日

select

datepart(weekday,getdate()) as

週內的第幾日

--年內的第幾周

select

datepart(week,getdate()) as

年內的第幾周

--年內的第幾季

select

datepart(quarter,getdate()) as

年內的第幾季

--判斷某天是當月的第幾周的sql函式

create

function weekofmonth(@day

datetime

)

returns

intas

begin

----declare @day datetime

declare

@num

intdeclare

@start

datetime

declare

@ddint

declare

@dayofweek

char(8

) declare

@dayofweek_num

char(8

) declare

@startweekdays

int--

-set @day='2009-07-05'

ifdatepart(dd,@day)=

1return

1else

set@start

= (select

dateadd(mm, datediff(mm,0,@day), 0)) --

乙個月第一天的

set@dayofweek

= (datename(weekday,@start)) --

-得到本月第一天是週幾

set@dayofweek_num

=(select (case

@dayofweek

when

'星期一

'then

2when

'星期二

'then

3when

'星期三

'then

4when

'星期四

'then

5when

'星期五

'then

6when

'星期六

'then

7when

'星期日

'then

1end

))

set@dayofweek_num=7

-@dayofweek_num+1

---得到本月的第一周一共有幾天

---print @dayofweek_num

set@dd

=datepart(dd,@day) --

--得到今天是這個月的第幾天

--print @dd

if@dd

<=

@dayofweek_num

--小於前一周的天數

return

1else

set@dd

=@dd

-@dayofweek_num

if@dd%7

=0begin

set@num

=@dd/7

return

@num+1

endelse

--if @dd % 7<>0

set@num

=@dd/7

set@num

=@num+1

+1return

@num

end

SQL日期常用函式

1.顯示本月第一天 select dateadd mm,datediff mm,0,getdate 0 select convert datetime,convert varchar 8 getdate 120 01 120 2.顯示本月最後一天 select dateadd day,1,conve...

SQL常用日期函式

原文 1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 返回 2004 10 17 00 00 00.000 3.dated...

SQL日期函式及應用

select year getdate as 年份 select month getdate as 月份 select datename year getdate as 年份 select datename month getdate as 月份 select datename weekday ge...