一直没有太注意TIMESTAMP类型的用法,今天才发现一些以前不知道的用法。
如果提到TIMESTAMP类似,绝大部分人首先会想到SYSTIMESTAMP。
SQL> SELECT SYSTIMESTAMP FROM DUAL;
SYSTIMESTAMP
------------------------------------------------
07-3月 -09 12.28.47.593000 上午 +08:00
对于当前时间附近的时间,可以通过SYSTIMESTAMP进行简单的加减法:
SQL> SELECT SYSTIMESTAMP - 5 FROM DUAL;
SYSTIMESTAMP-5
--------------
02-3月 -09
不过从结果上也可以发现,这样得到的实际上是日期类型。
如果要结果仍然是TIMESTAMP类型,那么就不能直接做加减法,而是要通过INTERVAL的方式:
SQL> SELECT SYSTIMESTAMP - INTERVAL '5' DAY FROM DUAL;
SYSTIMESTAMP-INTERVAL'5'DAY
--------------------------------------------------------------
02-3月 -09 12.32.25.890000000 上午 +08:00
除了这种方法外,另一种常用的方法就是利用TO_TIMESTAMP进行转换:
SQL> SELECT TO_TIMESTAMP('2009-1-15 22:12:23.238292348', 'YYYY-MM-DD HH24:MI:SS.FF') FROM DUAL;
TO_TIMESTAMP('2009-1-1522:12:23.238292348','YYYY-MM-DDHH24:MI:SS.FF')
---------------------------------------------------------------------------
15-1月 -09 10.12.23.238292348 下午
其实除了这两种方法外,还有一种直接指定TIMESTAMP类型的方法。如果使用过AS OF语句,那么就会对这种方法有所了解:
SQL> SELECT TIMESTAMP '2009-1-15 22:12:23.238292348' FROM DUAL;
TIMESTAMP'2009-1-1522:12:23.238292348'
----------------------------------------------------------------------
15-1月 -09 10.12.23.238292348 下午
使用这种方法还可以指定TIMESTAMP的时区:
SQL> SELECT TIMESTAMP '2009-1-15 22:12:23.238' AT TIME ZONE 'GMT'
2 FROM DUAL;
TIMESTAMP'2009-1-1522:12:23.238'ATTIMEZONE'GMT'
----------------------------------------------------------------------
15-1月 -09 02.12.23.238000000 下午 GMT
SQL> SELECT TIMESTAMP '2009-1-15 22:12:23.238' AT TIME ZONE '+08:00'
2 FROM DUAL;
TIMESTAMP'2009-1-1522:12:23.238'ATTIMEZONE'+08:00'
----------------------------------------------------------------------
15-1月 -09 10.12.23.238000000 下午 +08:00
当然使用TO_TIMESTAMP_TZ也可以得到包含时区信息的TIMESTAMP:
SQL> SELECT TO_TIMESTAMP_TZ(
2 '2009-1-15 22:12:23.238 +08:00',
3 'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM')
4 FROM DUAL;
TO_TIMESTAMP_TZ('2009-1-1522:12:23.238+08:00','YYYY-MM-DDHH24:MI:SS.FFTZH:T
---------------------------------------------------------------------------
15-1月 -09 10.12.23.238000000 下午 +08:00
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-563149/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-563149/