Oracle中的TIMESTAMP数据类型
oracle 时间转换timestamp格式表⽰的时间如何转换成普通格式:
SQL> SELECT to_char(tp,'dd-mm-yyyy hh24:mi:ss.ff') FROM TIMESTAMPTEST;
///
java.sql.Timestamp 和 java.sql.Date互相转换:
java.sql.Date--->java.sql.Timestamp
new java.sql.Time());
java.sql.Timestamp-->java.sql.Date
new java.sql.Time());
界⾯要显⽰毫秒的话,在date传到前⾯时转化格式即可!
///
TIMESTAMP 数据类型,是DATE的扩展,可以存储年、⽉、⽇、⼩时 、分钟、秒,同时还可以存储秒的⼩数部分。 语法为:TIMESTAMP [(fractional_seconds_precision)] fractional_seconds_precision为可选项,指定秒的⼩数部分的精度,取值范围为0-9,默认值为6。 ⽰例代码: declare v_inteval timestamp (7); begin v_inteval := TIMESTAMP '2007-05-05
23:34:45.1234567'; dbms_output.put_line(v_inteval); end; 结果为:05-5⽉ -07 11.34.45.1234567 下午。 说明:如果精度为5,则结果为05-5⽉ -07 11.34.45.12346 下午;如果精度为8,则结果为05-5⽉ -07 11.34.45.12345670 下午。 ⼆、TIMESTAMP WITH TIME ZONETIMESTAMP WITH TIME ZONE数据类型是可以指定时区的TIMESTAMP 。时区的偏移是指本地时间和格林尼治(UTC)时间之间的差异(⼩时 和分钟)。 语法为:TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE fractional_seconds_precision为可选项,指定秒的⼩数部分的精度,取值范围为0-9,默认值为6。 如果2个TIMESTAMP WITH TIME ZONE,相对于UTC代表相同的时间,则认为这2个TIMESTAMP WITH TIME ZONE是相等的,⽽不管这2个TIMESTAMP WITH TIME ZONE所代表的具体时间,例如:TIMESTAMP '1999-04-15 8:00:00 -8:00'和TIMESTAMP '1999-04-15 11:00:00 -5:00'是相等的,虽然他们分别表⽰当地的8点和11点,其中-8:00以及-5:00,表⽰相对UTC的偏移量。 在上例中,也可以将偏移量替换成时区地区(TRZ,time zone region),例如,上例中的TIMESTAMP '1999-04-15 8:00:00 -8:00',与TIMESTAMP '1999-
04-15 8:00:00 US/Pacific'是相等的。 为了削除因为夏令时引起的时间歧义,同时使⽤TRZ,以及和TRZ相对应的TRD来确保返回正确的时间,例如:TIMESTAMP '1999-10-29 01:30:00 US/Pacific PDT'。如果没有使⽤TZD元素,并且ORACLE 的ERROR_ON_OVERLAP_TIME session参数设置为TRUE,则ORACLE 会返回错误。如果ERROR_ON_OVERLAP_TIME session参数设置为FALSE,则ORACLE 认为该TIMESTAMP WITH TIME ZONE为标准时间。 代码⼀: declare v_inteval timestamp (7) with time zone; begin v_inteval := TIMESTAMP '2007-05-05 23:34:45.1234567'; dbms_output.put_line(v_inteval); end; 结果为:05-5⽉ -07
11.34.45.123456700 下午 +08:00。 说明:该结果与(⼀)中的代码结果相⽐,多了⼀个时区偏移量+08:00,说明该时间为北京时间。 代码⼆: declare v_inteval_1 timestamp (3) with time zone; v_inteval_2 timestamp (3) with time zone; begin v_inteval_1 := TIMESTAMP '1999-04-15 8:00:00 -8:00'; v_inteval_2 := TIMESTAMP '1999-04-15 11:00:00 -5:00';
if(v_inteval_1=v_inteval_2) then dbms_output.put_line('v_inteval_1=v_inteval_2'); else
dbms_output.put_line('v_inteval_1!=v_inteval_2'); end if; end; 结果为:v_inteval_1=v_inteval_2。 三、TIMESTAMP
WITH LOCAL TIME ZONETIMESTAMP WITH LOCAL TIME ZONE数据类型也是可以指定时区的TIM
ESTAMP ,和TIMESTAMP WITH TIME ZONE不同的是,他存储的是数据库的时区,时区偏移量并不存储。当⽤户提交数据,ORACLE 返回的是⽤户的本地所在的时区。时区的偏移是指本地时间和格林尼治(UTC)时间之间的差异(⼩时 和分钟)。TIMESTAMP WITH LOCAL TIME ZONE主要⽤于CS⼆层系统应⽤。 语法:TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE 以上代码的运⾏环境:
oracle9.2,pl/sql developer
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论