【實驗】【總結】Oracle日期類操作(格式 加減乘 取毫秒)

secooler發表於2009-03-04
1.日期格式、實驗
可以參考oracle官方文件(Table 2-15 Datetime Format Elements):

d-----------一週中的星期幾
day---------天的名字
dd----------月中的第幾天
ddd---------年中的第幾天
dy----------天的簡寫
iw----------ISO標準的年中的第幾周
iyyy--------ISO標準的四位年份
yyyy--------四位年份
yyy---------年份的最後三位
yy----------年份的最後兩位
y-----------年份的最後一位
hh或hh12----小時,按12小時計
hh24--------小時,按24小時計
mi----------分
ss----------秒
mm----------月
mon---------月份的簡寫
month-------月份的全名
w-----------該月的第幾個星期
ww----------年中的第幾個星期

sys@ora10g> select sysdate,to_char(sysdate,'d day dd ddd dy iw') "d day dd ddd dy iw" from dual;

SYSDATE             d day       dd ddd dy  iw
------------------- -------------------------
2009-03-05 03:20:00 5 thursday  05 064 thu 10

sys@ora10g> select sysdate,to_char(sysdate,'iyyy yyyy yyy yy y') "iyyy yyyy yyy yy y" from dual;

SYSDATE             iyyy yyyy yyy yy y
------------------- ------------------
2009-03-05 03:20:37 2009 2009 009 09 9

sys@ora10g> select sysdate,to_char(sysdate,'hh hh12 hh24 mi ss') "hh hh12 hh24 mi ss" from dual;

SYSDATE             hh hh12 hh24 mi ss
------------------- -------------------
2009-03-05 03:21:24 03 03   03   21 24

sys@ora10g> select sysdate,to_char(sysdate,'mm mon month w ww') "mm mon month w ww" from dual;

SYSDATE             mm mon month     w ww
------------------- ---------------------
2009-03-05 03:22:30 03 mar march     1 10


2.日期到字元操作to_char
sys@ora10g> select sysdate, to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') time from dual;

SYSDATE             TIME
------------------- -------------------
2009-03-05 03:24:11 2009-03-05 03:24:11

3.字元到日期操作to_date
sys@ora10g> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

sys@ora10g> select sysdate, to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') time from dual;

SYSDATE             TIME
------------------- -------------------
2009-03-05 03:24:49 2005-01-01 13:14:20

4.日期時間的加、減、乘運算
1).當前時間減去6分鐘的時間
sys@ora10g> select sysdate,sysdate - interval '6' minute "Sysdate - 6 minutes" from dual;

SYSDATE             Sysdate - 6 minutes
------------------- -------------------
2009-03-05 03:59:53 2009-03-05 03:53:53

2).當前時間減去6小時的時間
sys@ora10g> select sysdate, sysdate - interval '6' hour "Sysdate - 6 hours" from dual;

SYSDATE             Sysdate - 6 hours
------------------- -------------------
2009-03-05 04:00:54 2009-03-04 22:00:54

3).當前時間減去6天的時間
sys@ora10g> select sysdate, sysdate - interval '6' day "Sysdate - 6 days" from dual;

SYSDATE             Sysdate - 6 days
------------------- -------------------
2009-03-05 04:01:53 2009-02-27 04:01:53

4).當前時間減去6月的時間
sys@ora10g> select sysdate,sysdate - interval '6' month "Sysdate - 6 months" from dual;

SYSDATE             Sysdate - 6 months
------------------- -------------------
2009-03-05 04:02:53 2008-09-05 04:02:53

5).當前時間減去6年的時間
sys@ora10g> select sysdate,sysdate - interval '6' year "Sysdate - 6 years" from dual;

SYSDATE             Sysdate - 6 years
------------------- -------------------
2009-03-05 04:03:31 2003-03-05 04:03:31

6).加法類似,將上面減號替換成減號,舉一個當前時間加上6小時例子
sys@ora10g> select sysdate, sysdate + interval '6' hour "Sysdate + 6 hours" from dual;

SYSDATE             Sysdate + 6 hours
------------------- -------------------
2009-03-05 04:04:38 2009-03-05 10:04:38

7).乘法,當前時間減去6小時乘以2小時,及當前時間減去12個小時
sys@ora10g> select sysdate,sysdate - 6 * interval '2' hour "Sysdate - (6 * 2) hours" from dual;

SYSDATE             Sysdate - (6 * 2) hours
------------------- -----------------------
2009-03-05 04:06:58 2009-03-04 16:06:58

5.返回當前時間年月日小時分秒毫秒,毫秒最大精度為9
sys@ora10g> select sysdate, to_char(current_timestamp(9),'yyyy-mm-dd HH24:MI:SSxFF') from dual;

SYSDATE             TO_CHAR(CURRENT_TIMESTAMP(9),
------------------- -----------------------------
2009-03-05 04:12:11 2009-03-05 04:12:11.255944000

6.小結
oracle資料庫中對於時間的操作函式還是非常豐富的,使用也是很簡單,使用這些函式能夠極大的方便處理這些特殊進位制----時間!

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-561348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章