求timestamp型別的時間差

2021-05-22 10:00:23 字數 3412 閱讀 4511

timestamp資料型別:是date的擴充套件,可以儲存年、月、日、小時、分鐘、秒,同時還可以儲存秒的小數部分。

通過to_timestamp函式將date型轉成這種型別,來看看它的形式

詳見**:

sql**

selectto_timestamp('2009-7-30'

,'yyyy-mm-dd'

)   

fromdual  

select to_timestamp('2009-7-30','yyyy-mm-dd')

from dual

結果為:30-7月 -09 12.00.00.000000000 上午

timestamp以日期格式輸出表示

sql**

selectto_char(to_timestamp('2009-7-30'

,'yyyy-mm-dd hh24:mi:ss'

) ,'yyyy-mm-dd hh24:mi:ss'

)   

fromdual  

select to_char(to_timestamp('2009-7-30','yyyy-mm-dd hh24:mi:ss') ,'yyyy-mm-dd hh24:mi:ss')

from dual

結果為:2009-07-30 00:00:00

date格式的時間差,以秒為單位:

sql**

select(to_date('2009-7-30'

, 'yyyy-mm-dd hh24:mi:ss'

) -   

to_date('2009-7-29'

, 'yyyy-mm-dd hh24:mi:ss'

)) * 86400as

"itvtime"

fromdual  

select (to_date('2009-7-30', 'yyyy-mm-dd hh24:mi:ss') -

to_date('2009-7-29', 'yyyy-mm-dd hh24:mi:ss')) * 86400 as "itvtime"

from dual

結果為:86400

timestamp格式求時間差,以秒為單位:

sql**

select(to_date(to_char(to_timestamp('2009-7-30'

,'yyyy-mm-dd hh24:mi:ss'

) , 'yyyy-mm-dd hh24:mi:ss'

),   

'yyyy-mm-dd hh24:mi:ss'

) -   

to_date(to_char(to_timestamp('2009-7-29'

,'yyyy-mm-dd hh24:mi:ss'

) , 'yyyy-mm-dd hh24:mi:ss'

),   

'yyyy-mm-dd hh24:mi:ss'

)) * 86400as

"itvtime"

fromdual  

select (to_date(to_char(to_timestamp('2009-7-30','yyyy-mm-dd hh24:mi:ss') , 'yyyy-mm-dd hh24:mi:ss'),

'yyyy-mm-dd hh24:mi:ss') -

to_date(to_char(to_timestamp('2009-7-29','yyyy-mm-dd hh24:mi:ss') , 'yyyy-mm-dd hh24:mi:ss'),

'yyyy-mm-dd hh24:mi:ss')) * 86400 as "itvtime"

from dual

結果為:86400

求任意timestamp格式的時間戳,據2023年01月01日的毫秒數:

sql**

select(to_date(to_char(to_timestamp('2009-7-30'

,'yyyy-mm-dd hh24:mi:ss'

), 'yyyy-mm-dd hh24:mi:ss'

),'yyyy-mm-dd hh24:mi:ss'

) -   

to_date('1970-01-01 00:00:00'

, 'yyyy-mm-dd hh24:mi:ss'

)) * 86400000   

fromdual  

select (to_date(to_char(to_timestamp('2009-7-30','yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') -

to_date('1970-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')) * 86400000

from dual

結果為:1248912000000

應用:具體應用時將例子中to_timestamp()陰影部分**換成相應字段即可(該字段是timestamp格式)

與得到以分為單位或小時為單位只需要變乘的數即可

雖然實現了時間差的計算,自我感覺比較複雜化,希望找到比較簡便的方法。。。

根據日期求當月天數

sql**

selectadd_months(trunc(to_date('2009-9'

, 'yyyy-mm'

), 'mm'

), 1)    

- trunc(to_date('2009-9'

, 'yyyy-mm'

), 'mm'

)   

fromdual  

select add_months(trunc(to_date('2009-9', 'yyyy-mm'), 'mm'), 1) 

- trunc(to_date('2009-9', 'yyyy-mm'), 'mm')

from dual

時間戳TimeStamp處理

我獲得這個時間戳是得想除以1000再處理的,看看你們的需要先除多少再處理 時間戳處理 nsinteger time timestamp 1000 nsnumber timer nsnumber numberwithinteger time nstimeinterval interval timer ...

TimesTen 時間戳 timestamp 用法

很多時候我們需要對資料庫進行增量更新,比如從timesten資料庫匯入資料到mysql資料庫中。為了保證匯入是增量的,我們必須跳過那些沒有 被修改過的資料,現在比較流行的方法是使用時間戳,也就是定義乙個型別為timestamp的新列。當我們對這個表增加或刪除行時,必須更新這個列的資料,以反映行被更新...

oracle的timestamp型別使用

我們都知道date和timestamp都是對日期和時間的表示,只是兩種型別的精確度不同,前者精確到秒,後者精確到小數秒 fractional seconds precision 可以是 0 to 9,預設是 但是對date型別的運算很簡單,有很多函式可用來處理 而兩個timestamp的差則是很直觀...