T SQL 常用星期設定

2021-09-08 16:23:48 字數 3299 閱讀 8141

--

所在星期的第一天,計算給定日期所在星期的第1天(星期日為第一天)

declare

@date

datetime

set@date

=getdate

()--

與sql server語言版本相關的演算法

--思路:當前日期+星期日(每週的第1天)與當前日期的差的天數

--datepart(weekday,date)的返回值與@@datefirst相關

set datefirst 7

--或者設定為美國英語set language us_english; (星期日為第一天)

select

dateadd(weekday,1

-datepart(weekday,@date),@date) as

所在星期的第一天

--星期日,與sql server語言版本或@@datefirst無關

--1899-12-31 是星期日,1899-12-31 再加上(當前日期與 1899-12-31差的星期數)個星期

select

dateadd(week,datediff(week,-

1,@date),-

1) as

所在星期的星期日

--或者

select

dateadd(week,datediff(week,6,@date),6) as

所在星期的星期日

go--

所在星期的第二天,計算給定日期所在星期的第2天(星期日為第一天)

declare

@date

datetime

set@date

=getdate

()--

datepart(weekday,date)的返回值與@@datefirst相關

set datefirst 7

--select

dateadd(day,2

-datepart(weekday,@date),@date) as

所在星期的第二天

--'1900-01-01' 是星期一,'1900-01-01' 再加上(當前日期與'1900-01-01'差的星期數)個星期

select

dateadd(week,datediff(week,0,@date),0) as

所在星期的星期一

go--

上個星期第一天,計算給定日期所在星期的上乙個星期日(星期日為第一天)

declare

@date

datetime

set@date

=getdate

()--

思路:當前日誌所在星期的星期日再減1周

--datepart(weekday,date)的返回值與@@datefirst相關

--set datefirst 7 -- 或者設定為美國英語set language us_english; (星期日為第一天)

select

dateadd(week,-

1,dateadd(day,1

-datepart(weekday,@date),@date)) as

上個星期第一天

--一周等於7天

select

dateadd(day,-

7,dateadd(day,1

-datepart(weekday,@date),@date)) as

上個星期第一天

--簡化

select

dateadd(day,-6-

datepart(weekday,@date),@date) as

上個星期第一天

--上個星期日,與sql server語言版本或@@datefirst無關

select

dateadd(week,-1+

datediff(week,-

1,@date),-

1) as

上個星期日

--或者

select

dateadd(week,datediff(week,6,@date),-

1) as

上個星期日

go--

下個星期第一天,計算給定日期所在星期的下乙個星期日(星期日為第一天)

declare

@date

datetime

set@date

=getdate

()set datefirst 7

select

dateadd(week,1,dateadd(day,1

-datepart(weekday,@date),@date)) as

下個星期第一天

--一周等於7天

select

dateadd(day,7,dateadd(day,1

-datepart(weekday,@date),@date)) as

下個星期第一天

--簡化

select

dateadd(day,8

-datepart(weekday,@date),@date) as

下個星期第一天

--下個星期日,與sql server語言版本或@@datefirst無關

select

dateadd(week,1

+datediff(week,-

1,@date),-

1) as

下個星期日

--或者

select

dateadd(week,datediff(week,-

1,@date),6) as

下個星期日

go--

判斷給定日期是星期幾

declare

@date

datetime

set@date

=getdate

()--

datepart(weekday,date)的返回值與@@datefirst相關

set datefirst 7

--或者設定為美國英語set language us_english; (星期日為第一天)

select

datepart(weekday,@date) --

返回值 1-星期日,2-星期一,3-星期二......7-星期六

--上面演算法與sql 語言版本或 @@datefirst 相關

--下面演算法與sql server語言版本或@@datefirst無關

select

datename(weekday,@date

) 星期

go

T SQL 常用星期設定

所在星期的第一天,計算給定日期所在星期的第1天 星期日為第一天 declare date datetime set date getdate 與sql server語言版本相關的演算法 思路 當前日期 星期日 每週的第1天 與當前日期的差的天數 datepart weekday,date 的返回值與...

T SQL 日期常用函式

environment win7 sql server 2008 r2 author cc desctiption 常用日期函式整理 day,month,year datepart dateadd,datename datediff isdate 的使用 擷取乙個時間的年,月,日 select da...

T SQL常用日期函式

environment win7 sql server 2008 r2 author cc desctiption 常用日期函式整理 day,month,year datepart dateadd,datename datediff isdate 的使用 擷取乙個時間的年,月,日 select da...