-
8.5.1. 日期/时间输入
-
8.5.2. 日期/时间输出
-
8.5.3. 时区
-
8.5.4. 间隔输入
-
8.5.5. 间隔输出
PostgreSQL
支持
SQL
中所有的日期和时间类型,如表 8.9所示。这些数据类型上可用的操作如
第 9.9 节
所述。日期根据公历来计算,即使对于该历法被引入之前的年份也一样(见
第 B.6 节
)。
表 8.9. 日期/时间类型
|
名字
|
存储尺寸
|
描述
|
最小值
|
最大值
|
解析度
|
timestamp [ (
p
) ] [ without time zone ]
|
8字节
|
包括日期和时间(无时区)
|
4713 BC
|
294276 AD
|
1微秒
|
timestamp [ (
p
) ] with time zone
|
8字节
|
包括日期和时间,有时区
|
4713 BC
|
294276 AD
|
1微秒
|
date
|
4字节
|
日期(没有一天中的时间)
|
4713 BC
|
5874897 AD
|
1日
|
time [ (
p
) ] [ without time zone ]
|
8字节
|
一天中的时间(无日期)
|
00:00:00
|
24:00:00
|
1微秒
|
time [ (
p
) ] with time zone
|
12字节
|
仅仅是一天中的时间(没有日期),带有时区
|
00:00:00+1459
|
24:00:00-1459
|
1微秒
|
interval [
fields
] [ (
p
) ]
|
16字节
|
时间间隔
|
-178000000年
|
178000000年
|
1微秒
|
注意
SQL要求只写
timestamp
等效于
timestamp without time zone
,并且
PostgreSQL
鼓励这种行为。
timestamptz
被接受为
timestamp with time zone
的一种简写,这是一种
PostgreSQL
的扩展。
time
、
timestamp
和
interval
接受一个可选的精度值
p
,这个精度值声明在秒域中小数点之后保留的位数。缺省情况下,在精度上没有明确的边界。
p
允许的范围是从 0 到 6。
interval
类型有一个附加选项,它可以通过写下面之一的短语来限制存储的fields的集合:
MONTH
MINUTE
SECOND
YEAR TO MONTH
DAY TO HOUR
DAY TO MINUTE
DAY TO SECOND
HOUR TO MINUTE
HOUR TO SECOND
MINUTE TO SECOND
注意如果
fields
和
p
被指定,
fields
必须包括
SECOND
,因为精度只应用于秒。
类型
time with time zone
是 SQL 标准定义的,但是该定义显示出了一些会影响可用性的性质。在大多数情况下,
date
、
time
、
timestamp without time zone
和
timestamp with time zone
的组合就应该能提供任何应用所需的全范围的日期/时间功能。