SQL獲取指定日期(基本演算法)

2021-10-10 21:32:05 字數 2220 閱讀 5718

declare

@dtdatetime

set@dt

=getdate(

)declare

@number

intset

@number=3

--1.指定日期該年的第一天或最後一天

--a. 年的第一天

select

convert

(char(5

),@dt,

120)

+'1-1'

--b. 年的最後一天

select

convert

(char(5

),@dt,

120)

+'12-31'

--2.指定日期所在季度的第一天或最後一天

--a. 季度的第一天

select

convert

(datetime

,convert

(char(8

),dateadd(

month

, datepart(quarter,

@dt)*3

-month

(@dt)-

2,@dt)

,120)+

'1')

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

select

convert

(datetime

,convert

(char(8

),dateadd(

month

, datepart(quarter,

@dt)*3

-month

(@dt),

@dt)

,120)+

case

when datepart(quarter,

@dt)in(

1,4)

then

'31'

else

'30'

end)

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

select dateadd(

day,-1

,convert

(char(8

),dateadd(

month,1

+datepart(quarter,

@dt)*3

-month

(@dt),

@dt)

,120)+

'1')

--3.指定日期所在月份的第一天或最後一天

--a. 月的第一天

select

convert

(datetime

,convert

(char(8

),@dt,

120)

+'1'

)--b. 月的最後一天

select dateadd(

day,-1

,convert

(char(8

),dateadd(

month,1

,@dt),

120)

+'1'

)--c. 月的最後一天(容易使用的錯誤方法)

select dateadd(

month,1

,dateadd(

day,

-day

(@dt),

@dt)

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

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)

————————————————

SQL Server 獲取指定日期

查詢一段時期內 在開發應收賬款管理系統時,需要編寫 到賬率考核 模組,一般財務上都是取月底的資料作為考核資料,所以涉及到用sql獲取年末 月末等日期,就在網上收集了一些內容,做乙個記錄 函式引數 功能 getdate 返回系統目前的日期與時間 datediff interval,date1,date...

mysql 獲取指定日期到指定日期 區間段的日期

第一種方法 cross join 就相當於mysql中的迴圈 cross join 把兩張表中的資料進行 n m的組合,即笛卡爾積 這裡的兩張表利用 union all都有5條資料,所以進行 cross join 後 就有25條資料 而指定的日期區間就會從這25條資料總產生 select curda...

php獲取指定日期時間

本周一echo date y m d time date w 0 7 date w 1 24 3600 w為星期幾的數字形式,這裡0為週日 本週日echo date y m d time 7 date w 0 7 date w 24 3600 同樣使用w,以現在與週日相關天數算 上周二echo da...