2007年2月15日 星期四

在Oracle中處理 用Java System.currentTimeMillis() 儲存的資料

為了系統的需求,資料需紀錄到毫秒(Millisecond),所以我們會將System.currentTimeMillis() 取得的值寫入db的systemdate欄位,但是如果要用SQL 做時間範圍的搜尋,有以下做法
( systemdate欄位存放System.currentTimeMillis() 取得的值)


--找出myTable資料表中 systemdate欄位 在 2006/11/28 14:00:00 ~ 14:10:00 的資料

select * from myTable 
where systemdate >= (to_date('20061128 14:00:00','YYYYMMDD hh24:mi:ss') - to_date('19700101 8:00:00','YYYYMMDD hh24:mi:ss'))*1000*60*60*24 
and systemdate <= (to_date('20061128 14:10:00','YYYYMMDD hh24:mi:ss') - to_date('19700101 8:00:00','YYYYMMDD hh24:mi:ss'))*1000*60*60*24



--找出myTable資料表中日期最小的時間
select to_date('19700101 8:00:00','YYYYMMDD hh24:mi:ss') + ((select min(SYSTEMDATE) from myTable )/1000/60/60/24) from dual