Oracle PL / SQL TIMESTAMP 数据类型
最编程
2024-05-08 11:00:17
...
数据类型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。