時間相加減函式

2021-05-23 02:59:23 字數 2489 閱讀 4282

--時間減1函式

create function f_dateadd(

@date datetime,

@datestr varchar(23)

)returns datetime

asbegin

declare @bz int,@s varchar(12),@i int

if @datestr is null or @date is null

or(charindex('.',@datestr)>0

and @datestr not like '%[:]%[:]%.%')

return(null)

if @datestr='' return(@date)

select @bz=case

when left(@datestr,1)='-' then -1

else 1 end,

@datestr=case

when left(@date,1)='-'

then stuff(rtrim(ltrim(@datestr)),1,1,'')

else rtrim(ltrim(@datestr)) end

if charindex(' ',@datestr)>1

or charindex('-',@datestr)>1

or(charindex('.',@datestr)=0

and charindex(':',@datestr)=0)

begin

select @i=charindex(' ',@datestr+' ')

,@s=reverse(left(@datestr,@i-1))+'-'

,@datestr=stuff(@datestr,1,@i,''),@i=0

while @s>'' and @i<3

select @date=case @i

when 0 then dateadd(day,@bz*reverse(left(@s,charindex('-',@s)-1)),@date)

when 1 then dateadd(month,@bz*reverse(left(@s,charindex('-',@s)-1)),@date)

when 2 then dateadd(year,@bz*reverse(left(@s,charindex('-',@s)-1)),@date)

end,

@s=stuff(@s,1,charindex('-',@s),''),

@i=@i+1

endif @datestr>''

begin

if charindex('.',@datestr)>0

select @date=dateadd(millisecond

,@bz*stuff(@datestr,1,charindex('.',@datestr),''),@date),

@datestr=left(@datestr,charindex('.',@datestr)-1)+':',

@i=0

else

select @datestr=@datestr+':',@i=0

while @datestr>'' and @i<3

select @date=case @i

when 0 then dateadd(hour,@bz*left(@datestr,charindex(':',@datestr)-1),@date)

when 1 then dateadd(minute,@bz*left(@datestr,charindex(':',@datestr)-1),@date)

when 2 then dateadd(second,@bz*left(@datestr,charindex(':',@datestr)-1),@date)

end,

@datestr=stuff(@datestr,1,charindex(':',@datestr),''),

@i=@i+1

endreturn(@date)

endgo

select dbo.f_dateadd(getdate(),'1')

預設增加1天,增加小時分秒hh:mm:ss .   相減前面寫-號

/**//*--特殊日期加減函式

對於日期指定部分的加減,使用dateadd函式就可以輕鬆實現。

在實際的處理中,還有一種比較另類的日期加減處理

就是在指定的日期中,加上(或者減去)多個日期部分

比如將2023年3月11日,加上1年3個月11天2小時。

對於這種日期的加減處理,dateadd函式的力量就顯得有點不夠。

本函式實現這樣格式的日期字串加減處理:

y-m-d h:m:s.m | -y-m-d h:m:s.m

說明:要加減的日期字元輸入方式與日期字串相同。日期與時間部分用空格分隔

最前面乙個字元如果是減號(-)的話,表示做減法處理,否則做加法處理。

如果日期字元只包含數字,則視為日期字元中,僅包含天的資訊。

--*/

oracle 時間相加減

1.分鐘轉成不同格式的時間 資料庫裡有個字段 存的分鐘 現在想顯示成hh mm格式 假設為514分鐘 select to char to date 00 00 hh24 mi 514 24 60 hh24 mi from dual 輸出結果 08 34 如果存的是秒 同理 select to cha...

mysql加減時間 函式 時間加減

mysql加減時間 函式 時間加減 1.mysql 為日期增加乙個時間間隔 date add set dt now select date add dt,interval 1 day 加1天 select date add dt,interval 1 hour 加1小時 select date ad...

mysql加減時間 函式 時間加減

mysql加減時間 函式 時間加減 1.mysql 為日期增加乙個時間間隔 date add set dt now select date add dt,interval 1 day 加1天 select date add dt,interval 1 hour 加1小時 select date ad...