sql中兩個日期相減

2021-05-24 00:58:55 字數 2538 閱讀 2638

sql中兩個日期相減

1、相差天數

select trunc(sysdate,'yyyy')-to_date('2009-01-04','yyyy-mm-dd') from dual;

2、相差月數

select  months_between(trunc(sysdate,'mm'),to_date('2009-01','yyyy-mm')) from dual; 

3、相差年數

select trunc((months_between(trunc(sysdate,'dd'),to_date('2009-01-01','yyyy-mm-dd')))/12) from dual;

4、select datediff( day, '2008.08.25', '2008.09.01' )

5、select datediff( second, '2009-8-25 12:15:12', '2009-9-1 7:18:20') --返回相差秒數

6、select datediff( minute, '2009-8-25 12:15:12', '2009-9-1 7:18:20') --返回相差分鐘數

7、select datediff( hour, '2009-8-25 12:15:12', 2009-9-1 7:18:20') --返回相差小時數

問題三:select datediff( day, 2009-8-25 12:15:12', 2009-9-1 7:18:20')

例項二use pubs

select distinct datediff(day, '2009-3-12', '2009-3-15') as difday

from titles

結果:3

declare @dt1 as datetime, @dt2 as datetime;

select @dt1 = '2008-8-4 9:36:41', @dt2 = '2008-8-2 9:33:39';

declare @days as int, @hours as int, @minutes as int, @seconds as int;

set @seconds = datediff( second, @dt2, @dt1);

set @days = @seconds / (24 * 60 * 60)

set @seconds = @seconds - @days * 24 * 60 * 60

set @hours = @seconds / (60 * 60);

set @seconds = @seconds - @hours * 60 * 60

set @minutes = @seconds / 60;

set @seconds = @seconds - @minutes * 60;

select convert(varchar(10), @days ) + '天' + convert(varchar(10), @hours ) + '小時' + convert(varchar(10), @minutes ) + '分' + convert(varchar(10), @seconds ) + '秒';

下面來看個例項

我有乙個表,其中有四個字段:開始天數,開始時間,到達天數,到達時間(這四個欄位都是varchar型別)

例如:某一條記錄:   1  16:00  2   12:20

我的目的就是用 select(到達天數+到達時間)-(開始天數+開始時間) as 花費時間 from table

例如上條記錄得到的就是(2*24:00+12:20)-(24:00+16:00)=20:00

這樣的sql語句該怎麼寫???

declare @t table

(beginday int,

begintime varchar(20),

endday int,

endtime varchar(20)

)insert @t select 1,'16:00',2,'12:20'

union all select 1,'3:00',3,'19:10'

select

date=rtrim(date/60)+':'+rtrim(date%60)

from

(select     date=datediff(mi,1,dateadd(d,endday-beginday,beginday)-begintime+endtime)from    @t )t

date

-------------------------

20:20

64:10

方法二declare @t table(開始天數 varchar(10),開始時間 varchar(10),到達天數 varchar(10),到達時間 varchar(10))

insert @t select '1',  '16:00','2','12:20'

--如果開始天數,到達天數大於31

select 到達天數 * 24 + datepart(hh,到達時間) - 開始天數 * 24 - datepart(hh,開始時間)

from @t

sql中兩個日期相減

sql中兩個日期相減 1 相差天數 select trunc sysdate,yyyy to date 2009 01 04 yyyy mm dd from dual 2 相差月數 select months between trunc sysdate,mm to date 2009 01 yyyy...

oracle中兩個日期相減

oracle兩個時間相減預設的是天數 oracle 兩個時間相減預設的是天數 24 為相差的小時數 oracle 兩個時間相減預設的是天數 24 60 為相差的分鐘數 oracle 兩個時間相減預設的是天數 24 60 60 為相差的秒數 months between date2,date1 給出d...

兩個指標相減

原文 如果兩個指標指向同乙個陣列,它們就可以相減,其結果為兩個指標之間的元素數目。假設我住在廣場路124號,mag住在廣場路142號,每家之間的位址間距是2 在我這一側用連續的偶數作為街道位址 那麼mag家就在我家往前 142 124 2家,也就是說可以得到我們兩家之間相隔8家。也就是說可以利用兩個...