关于timestamp数据类型
关于timestamp数据类型
很早就知道oracle有timestamp这种数据类型,不过没有怎么用过,也就没有深入了解了。
用的较多的就是date数据类型,当然此数据类型可以解决当前工作中很多和时间相关的问题,也可以使用oracle很多自带的日期函数。
今天开发那边的需求需要精度更高的时间列,于是就想到了oracle的timestamp数据类型。
timestamp数据类型说明
timestamp数据类型可以存储精度到秒小数后0-9位,默认为6位,也就是说此数据类型可以存储的精度是十几亿分之一秒的日期。当然此数据类型和date也一样存储年、月、日、时、分、秒。
以下为具体操作示例:
1、带时区的timestamp
SQL> create table yallonking_zone(id number,my_time timestamp(9) with time zone);
Table created.
SQL> insert into yallonking_zone values(1,sysdate);
1 row created.
SQL> insert into yallonking_zone values(2,systimestamp);
1 row created.
SQL> select * from yallonking_zone;
ID MY_TIME
-- ---------------------------------------------------------------------------
1 16-3月 -12 09.48.00.000000000 上午 +08:00
2 16-3月 -12 09.48.08.692798000 上午 +08:00
此处可见,timestamp数据类型显示的当前时间是比UTC(通用协调时间)迟8个小时。
2、不带时区的timestamp
SQL> create table yallonking(id number,my_time timestamp);
Table created.
SQL> insert into yallonking values(1,sysdate);
1 row created.
SQL> insert into yallonking values(2,systimestamp);
1 row created.
SQL> select * from yallonking;
ID MY_TIME
-- ---------------------------------------------------------------------------
1 16-3月 -12 09.47.12.000000 上午
2 16-3月 -12 09.47.21.559822 上午
此处可见,timestamp数据类型默认是秒之后6位小数。
3、timestamp与oracle日期函数相关
SQL> select to_char(add_months(last_day(max(least(my_time))),1),'yyyy/mm/dd hh24:mi:ss') as my_time_new from yallonking_zone;
MY_TIME_NEW
---------------------------------------------------------------------------
2012/04/30 09:48:08
由此可见,timestamp和常用的date类型一样,同样可以灵活使用oracle的日期函数。