Datetime and Interval Data Types
TIMESTAMP WITH TIME ZONE Data Type
TIMESTAMP
WITH
TIME
ZONE
是其值TIMESTAMP
中包含时区区域名称或时区偏移量的变体。时区偏移是本地时间和 UTC(协调世界时 - 以前的格林威治标准时间)之间的差异(以小时和分钟为单位)。此数据类型对于保存本地时区信息很有用。
指定TIMESTAMP
WITH
TIME
ZONE
数据类型如下:
TIMESTAMP [( fractional_seconds_precision )] WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE 数据类型
TIMESTAMP
WITH
LOCAL
TIME
ZONE
是另一个TIMESTAMP
对时区信息敏感的变体。不同之处在于TIMESTAMP
WITH
TIME
ZONE
存储在数据库中的数据被规范化为数据库时区,而时区信息不作为列数据的一部分存储。当用户检索数据时,Oracle 会以用户的本地会话时区返回数据。此数据类型对于始终在两层应用程序中以客户端系统的时区显示的日期信息很有用。
指定TIMESTAMP
WITH
LOCAL
TIME
ZONE
数据类型如下:
TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE
其中,fractional_seconds_precision可选地指定Oracle在SECOND datetime字段的小数部分中存储的位数。创建此数据类型的列时,该值可以是0到9之间的数字。默认值为6。
INTERVAL YEAR TO MONTH 数据类型
INTERVAL YEAR TO MONTH使用YEAR和MONTH日期时间字段存储时间段。当只有年和月的值很重要时,此数据类型用于表示两个日期时间值之间的差异。
Specify INTERVAL
YEAR
TO
MONTH
as follows:
INTERVAL YEAR [(year_precision)] TO MONTH
其中year_precision是year datetime字段中的位数。year_precision的默认值为2。
Specify YEAR
TO
MONTH
interval literals using the following syntax:
- “integer[-integrate]”为文本的前导字段和可选尾随字段指定整数值。如果前导字段为YEAR,尾随字段为MONTH,则月份字段的整数值范围为0到11。
- precision(精度)是前导字段中的最大位数。前导字段精度的有效范围为0到9,其默认值为2。
对前导字段的限制
如果指定了尾随字段,则其重要性必须小于前导字段。例如,INTERVAL“0-1”MONTH TO YEAR无效。
以下INTERVAL YEAR TO MONTH文字表示123年2个月的间隔:
INTERVAL '123-2' YEAR(3) TO MONTH
下面是其他形式文字的示例,包括一些缩写版本:
Form of Interval Literal | Interpretation |
---|---|
|
An interval of 123 years, 2 months. You must specify the leading field precision if it is greater than the default of 2 digits. |
|
An interval of 123 years 0 months. |
|
An interval of 300 months. |
|
Maps to |
|
Maps to |
|
Returns an error, because the default precision is 2, and '123' has 3 digits. |
您可以将一个INTERVAL YEAR TO MONTH文字添加到另一个文字或从中减去,以生成另一个INTERVAL YAER TO MONTH文字。例如:
INTERVAL '5-3' YEAR TO MONTH + INTERVAL'20' MONTH = INTERVAL '6-11' YEAR TO MONTH
INTERVAL DAY TO SECOND Data Type
INTERVAL DAY TO SECOND以天、小时、分钟和秒的形式存储时间段。此数据类型用于表示两个日期时间值之间的精确差异。
Specify this data type as follows:
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]
day_precision是day datetime字段中的位数。接受的值为0到9。默认值为2。
fractional_seconds_precision是SECOND datetime字段小数部分的位数。接受的值为0到9。默认值为6。
- 整数指定天数。如果此值包含的数字多于前导精度指定的数字,则Oracle将返回错误。
- time_expr以格式HH[:MI[:SS[.n]]]或MI[:SS[.n]]或SS[.n]指定时间,其中n指定秒的小数部分。如果n包含的位数超过了fractional_seconds_precision指定的位数,则n将四舍五入为fractional_seconds_precision值指定的位数。仅当前导字段为DAY时,才能在整数和空格后指定time_expr。
- leading_precision是前导字段中的位数。接受的值为0到9。默认值为2。
- fractional_seconds_precision是SECOND datetime字段小数部分的位数。接受值为1到9。默认值为6。
example:
CREATE TABLE time_table (start_time TIMESTAMP, duration_1 INTERVAL DAY (6) TO SECOND (5), duration_2 INTERVAL YEAR TO MONTH);
start_time列的类型为TIMESTAMP。TIMESTAMP的隐式小数秒精度为6。
duration_1列的类型为INTERVAL DAY TO SECOND。字段DAY中的最大位数为6,小数秒中的最大数字位数为5。所有其他日期时间字段中的最大数位数为2。
duration_2列的类型为INTERVAL YEAR TO MONTH。每个字段(YEAR和MONTH)中值的最大位数为2。
间隔数据类型没有格式模型。因此,要调整它们的表示方式,必须组合字符函数(如EXTRACT)并连接组件。例如,以下示例查询hr.employees和oe.orders。并将时间间隔输出格式从“yy-mm”更改为“yy-years-mm months”,并从“dd-hh”改为“dd-dd days hh-hours”:
SELECT last_name, EXTRACT(YEAR FROM (SYSDATE - hire_date) YEAR TO MONTH) || ' years ' || EXTRACT(MONTH FROM (SYSDATE - hire_date) YEAR TO MONTH) || ' months' "Interval" FROM employees; LAST_NAME Interval ------------------------- -------------------- OConnell 2 years 3 months Grant 1 years 9 months Whalen 6 years 1 months Hartstein 5 years 8 months Fay 4 years 2 months Mavris 7 years 4 months Baer 7 years 4 months Higgins 7 years 4 months Gietz 7 years 4 months . . . SELECT order_id, EXTRACT(DAY FROM (SYSDATE - order_date) DAY TO SECOND) || ' days ' || EXTRACT(HOUR FROM (SYSDATE - order_date) DAY TO SECOND) || ' hours' "Interval" FROM orders; ORDER_ID Interval ---------- -------------------- 2458 780 days 23 hours 2397 685 days 22 hours 2454 733 days 21 hours 2354 447 days 20 hours 2358 635 days 20 hours 2381 508 days 18 hours 2440 765 days 17 hours 2357 1365 days 16 hours 2394 602 days 15 hours 2435 763 days 15 hours . . .
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了