SQL獲取每月最後一天記錄

2021-07-11 17:54:11 字數 2294 閱讀 7154

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獲取第一天最後一天

declare dtdatetime set dt getdate declare number int set number 3 1 指定日期該年的第一天或最後一天 a.年的第一天 selectconvert char 5 dt,120 1 1 b.年的最後一天 selectconvert cha...

SQL獲取第一天和最後一天

sql獲取第一天和最後一天 declare dt datetime set dt getdate declare number int set number 3 1 指定日期該年的第一天或最後一天 a.年的第一天 select convert char 5 dt,120 1 1 b.年的最後一天 s...

前端記錄最後一天

async await的理解使用 let asyncfn async console.log data.name 列印出的是my name is data let notasyncfn console.log data.name 列印出的是undefined 因為data此時還是null await...