数据类型TIMESTAMP存储年,月,日,小时,分钟和秒。
语法是:
TIMESTAMP[(precision)
其中精度指定秒字段的小数部分中的数字数。
默认值为6。
默认时间戳格式由Oracle初始化参数NLS_TIMESTAMP_FORMAT设置。
例
DECLARE checkout TIMESTAMP(3); BEGIN checkout := '22-JUN-2022 07:48:53.275'; DBMS_OUTPUT.PUT_LINE( TO_CHAR(checkout)); END; /
实例2
以下代码显示如何使用SCN_TO_TIMESTAMP和TIMESTAMP_TO_SCN函数来操作TIMESTAMP。
DECLARE right_now TIMESTAMP; yesterday TIMESTAMP; sometime TIMESTAMP; i_scn1 INTEGER; i_scn2 INTEGER; i_scn3 INTEGER; BEGIN right_now := SYSTIMESTAMP; i_scn1 := TIMESTAMP_TO_SCN(right_now); DBMS_OUTPUT.PUT_LINE(i_scn1); yesterday := right_now - 1; i_scn2 := TIMESTAMP_TO_SCN(yesterday); DBMS_OUTPUT.PUT_LINE(i_scn2); i_scn3 := (i_scn1 + i_scn2) / 2; sometime := SCN_TO_TIMESTAMP(i_scn3); DBMS_OUTPUT.PUT_LINE (i_scn3); DBMS_OUTPUT.PUT_LINE (sometime); END; /
TIMESTAMP WITH TIME ZONE数据类型
TIMESTAMP WITH TIME ZONE包含时区位移。
时区位移是本地时间和协调世界时间(UTC)之间的格林威治标准时间(GMT)之间的差。
语法是:
TIMESTAMP[(precision)] WITH TIME ZONE
precision指定秒字段的小数部分中的数字位数,范围为0..9。
默认值为6。
具有时区格式的默认时间戳由Oracle初始化参数NLS_TIMESTAMP_TZ_FORMAT设置。
以下代码显示如何将Literal分配给TIMESTAMP WITH TIME ZONE变量。
DECLARE logoff TIMESTAMP(3) WITH TIME ZONE; BEGIN logoff := '10-OCT-2004 09:42:37.114 AM +02:00'; DBMS_OUTPUT.PUT_LINE (TO_CHAR(logoff)); END; /
例如,以下文字都表示相同的时间。
TIMESTAMP '15-APR-2014 8:00:00 -8:00' TIMESTAMP '15-APR-2014 8:00:00 US/Pacific' TIMESTAMP '31-OCT-2014 01:30:00 US/Pacific PDT'
时区的可用名称位于静态数据字典视图V $ TIMEZONE_NAMES的TIMEZONE_REGION和TIMEZONE_ABBR列中。
具有本地时区的TIMESTAMP数据类型
TIMESTAMP WITH LOCAL TIME ZONE包括时区位移。
时区位移是本地时间和协调世界时间之间的差。
我们可以使用命名的时区,如TIMESTAMP WITH TIME ZONE一样。
语法是:
TIMESTAMP[(precision)] WITH LOCAL TIME ZONE
precision指定秒字段的小数部分中的位数。
将值插入数据库列时,该值将归一化为数据库时区,并且时区位移不会存储在列中。
当您检索该值时,Oracle会在您的本地会话时区中返回该值。
以下代码显示如何使用LOCAL TIME ZONE分配给TIMESTAMP。
DECLARE logoff TIMESTAMP(3) WITH LOCAL TIME ZONE; BEGIN logoff := '10-OCT-2014 10:42:37.111 AM '; DBMS_OUTPUT.PUT_LINE(TO_CHAR(logoff)); END; /
查看更多关于Oracle PL / SQL TIMESTAMP数据类型的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did225672