当前位置:早雪网网络学院编程文档数据库技术Postgresql → PostgreSQL7.0手册-用户手册-3. 数据类型

PostgreSQL7.0手册-用户手册-3. 数据类型

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-23 12:18:21
与 PST 的偏移 


interval(时间间隔)
interval 可以用下面语法声明: 
  Quantity Unit [Quantity Unit...] [Direction]
@ Quantity Unit [Direction]

这里:Quantity 是 ...,-1,0,1,2,...;Unit 是 second,minute,hour,day,week,month,year,decade,century,millenium,或者这些单位的缩写或复数;Direction 可以是 ago 或者为空。 
特殊值
下面的SQL-兼容的函数可以用于对应的数据类型的日期或时间输入:CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP。 
PostgreSQL 为方便期间同样还支持几个特殊常量。 

表 3-14. PostgresSQL 日期/时间特殊常量 
  常量 描述 
current 当前事务时间, (使用时)deferred 
epoch 1970-01-01 00:00:00+00 (Unix 系统零时) 
infinity 比任何有效时间晚 
-infinity 比任何有效时间早 
invalid 非法输入 
now 当前事务时间 
today 今日午夜 
tomorrow 明日午夜 
yesterday 昨日午夜 


'now' 在该值被插入时解释,'current' 在每次检索该值时被解释。所以你可能会在大多数应用里使用 'now'。(当然你真的想用 CURRENT_TIMESTAMP 的话也行,它等效于 'now'。) 

日期/时间输出
使用 SET DateStyle,输出格式可以设成四种风格之一: ISO-8601, SQL (Ingres),传统的 Postgres,和 German 风格。缺省是 ISO 格式。 
表 3-15. PostgreSQL 日期/时间输出风格 
  风格描述 描述 例子 
'ISO' ISO-8601 标准 1997-12-17 07:37:16-08 
'SQL' 传统风格 12/17/1997 07:37:16.00 PST 
'Postgres' 原始风格 Wed Dec 17 07:37:16 1997 PST 
'German' 地区风格 17.12.1997 07:37:16.00 PST 


日期和时间风格的输出当然只是对应上面例子的日期或者时间部分。 

SQL 风格有欧洲和非欧洲(US)变种, 决定月份后面是日期还是正相反.(参阅上面日期/时间输入部分,看看这个设置是如何影响对输入值的解释。) 

表 3-16. PostgreSQL 日期顺序传统 
  风格 描述 例子 
European 日/月/年 17/12/1997 15:37:16.00 MET 
US 月/日/年 12/17/1997 07:37:16.00 PST 


interval 的输出看起来象输入格式,只是象 week 或 century 这样的单位被转换成年和日。在 ISO 模式下输出看起来象 

[ Quantity Units [ ... ] ] [ Days ] Hours:Minutes [ ago ]
有几种方法可以影响日期/时间类型的输出: 
直接在postmaster启动时用于后端的环境变量 PGDATESTYLE。 
会话开始时用于 libpg 的环境变量 PGDATESTYLE。 
SQL 命令 SET DATESTYLE。 
时区
Postgres 在典型应用中尽可能与SQL92 的定义相兼容.但 SQL92 标准在日期和时间类型和功能上有一些奇怪的混淆.两个显而易见的问题是: 
date(日期)类型与时区没有联系,而 time(时间)类型却有或可以有. 
缺省的时区用一个整数常量表示与GMT/UTC的偏移(时差). 
然而,现实世界的时区只有在与时间和日期都关联时才有意义,因为时间偏移量(时差)可能因为实行类似夏时制这样的制度而在一年里有所变化. 
为了克服这些困难, Postgres 只将日期和时间类型(同时包含日期和时间)与时区相关联,并且假设任何类型的当地时间只包含日期或时间.另外,时区的支持从操作系统的时区功能中引入,这样就可以处理夏时制或其他可知的因素. 

Postgres 从操作系统获得介于1902年和2038年的日期的时区支持(近乎是典型的Unix类系统的日期限制).在这个范围之外的日期都假设为用全球统一时间(Universal Coordinated Time,UTC)声明和使用。 

在系统内部,所有日期和时间都是用全球统一时间(UTC)格式存储,也就是通常所说的格林威治时间(GMT).时间在发给客户前端前由数据库服务器转换成本地时间,因而缺省的时区是服务器的时区. 

有几种影响时区特性的方法: 

直接在postmaster启动时后端使用TZ环境变量作为缺省时区. 
客户端使用libpq时用 PGTZ 环境变量将时区信息传递给后端. 
SQL 命令 SET TIME ZONE 可以给会话设置时区. 
如果使用了非法的时区,时区变为GMT(在大多数系统上)。 
注意:如果设置了编译选项 USE_AUSTRALIAN_RULES,那么 EST 代表澳大利亚东部标准时间,( Australia Eastern Std Time)与UTC有 +10:00 小时的偏移量。
内部
Postgres 用 Julian 记日法用于所有日期/时间计算。如果假设一年的长度是365.2425天时,这个方法可以很精确地预计/计算从4713BC(公元前4713年)到很久的未来的任意一天的日期。 
19世纪以前的日期传统(历法)对一些趣味读物有意义,但是在我们这里好象没有充分的理由把它们编码入日期/时间控制器里面去。 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

布尔类型
Postgres 支持用 bool 作为 SQL3 布尔数据类型. bool只能有两个状态之一: '真'('True') 或 '假'('False').第三种状态,'未知'('Unknow'),在 SQL3中没有建议,因而也没有实现;NULL是一个有效的替代品.bool可用于任何布尔表达式,并且布尔表达式的结果也是布尔类型兼容的. 
bool 使用1字节存储空间. 

表 3-17. Postgres 布尔类型 
  状态 输出 输入 
True 't' TRUE, 't', 'true', 'y', 'yes', '1' 
False 'f' FALSE, 'f', 'false', 'n', 'no', '0' 



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

几何类型
几何类型表示二维的平面物体.最基本的类型:点,是其他类型的基础. 
表 3-18. Postgres 几何类型 
  几何类型 存储空间 表达 描述 
point 16 bytes (x,y) 空间中一点 
line 32 bytes ((x1,y1),(x2,y2)) (无穷)直线 
lseg 32 bytes ((x1,y1),(x2,y2)) 线段 
box 32 bytes ((x1,y1),(x2,y2)) 长方形 
path 4+32n bytes ((x1,y1),...) 闭合路径(与多边形类似

上一页  [1] [2] [3] [4]  下一页

[数据载入中...] [返回上一页] [打 印]