sql日期操作收集

2022-03-24 08:32:17 字數 3540 閱讀 2266

declare @dt datetime

set @dt=getdate()

declare @number int

set @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)

--獲取上週的第一天 和最後一天

declare @dt datetime

declare @firstday datetime

declare @lastday datetime

set @dt=dateadd(day,-7,getdate())

select @dt = dateadd(day,1-(datepart(weekday,@dt)+@@datefirst-2)%7-1,@dt)

set @firstday = cast(convert(char(10),@dt,120) +' 00:00:00' as datetime)

select @lastday  = cast(convert(char(10),dateadd(day,6,@dt),120)+' 23:59:59' as datetime)

select @firstday,@lastday

--昨天的時間範圍

select cast(convert(char(10),dateadd(day,-1,getdate()),120) + ' 00:00:00' as datetime)

select cast(convert(char(10),dateadd(day,-1,getdate()),120) + ' 23:59:59' as datetime)

--1.獲取今天的開始時間和最後時間

--2.獲取昨天的開始時間和最後時間

--3.獲取上週的開始時間和最後時間

--4.獲取上月的開始時間和最後時間

declare @dt datetime

declare @firstdate1 datetime,@lastdate1 datetime

declare @firstdate2 datetime,@lastdate2 datetime

declare @firstdate3 datetime,@lastdate3 datetime

declare @firstdate4 datetime,@lastdate4 datetime

set @dt = getdate()

set @firstdate1 = cast(convert(char(10),getdate(),120) + ' 00:00:00' as datetime)

set @lastdate1 = cast(convert(char(10),getdate(),120) + ' 23:59:59' as datetime)

--select @firstdate1,@lastdate1

set @dt = dateadd(day,-1,getdate())

set @firstdate2 = cast(convert(char(10),@dt,120) + ' 00:00:00' as datetime)

set @lastdate2 = cast(convert(char(10),@dt,120) + ' 23:59:59' as datetime)

--select @dt,@firstdate2,@lastdate2

set @dt = dateadd(day,-7,getdate())

set @dt = dateadd(day,-(datepart(weekday,@dt) -2),@dt)

set @firstdate3 = cast(convert(char(10),@dt,120) + ' 00:00:00' as datetime)

set @lastdate3 = cast(convert(char(10),dateadd(day,6,@dt),120) + ' 23:59:59' as datetime)

--select @dt,@firstdate3,@lastdate3

set @dt = getdate()

set @firstdate4 = cast(convert(char(8),@dt,120) +'01 00:00:00' as datetime)

set @lastdate4 = dateadd(month,1,@firstdate4)

--select @dt,@firstdate4,@lastdate4

SQL日期格式操作

sql server中文版的預設的日期欄位datetime格式是yyyy mm dd thh mm ss.mmm 例如 select getdate 2004 09 12 11 06 08.177 整理了一下sql server裡面可能經常會用到的日期格式轉換方法 舉例如下 select conve...

sql中日期操作

1.看到乙個帖子,裡面日期操作函式挺多,方法技巧也挺好,學習了。declare s date select s 2012 01 01 定義開始日期 select cast datepart yy,dateadd dd,number,s as varchar 4 年 cast datepart mm,...

sql日期的操作

現象 1 sql查詢當前時間間隔的語句 2 sql返回兩個日期的間隔時間 天 月 時 3 將sql查出來的日期改變為指定格式的 字串 解決辦法 1 sql查詢當前時間間隔的語句 2 sql返回兩個日期的間隔時間 天 月 時 其中字母表示的意思 datediff 函式返回兩個日期之間的時間。語法dat...