--所在星期的第一天,計算給定日期所在星期的第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...