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

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

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

字符类型
SQL92 定义了两种基本的字符类型: char 和 varchar. Postgres 支持这些类型,并且还支持更通用的 text 类型,该类型不象varchar 一样必须要定义一个数据域的上限. 
表 3-5. Postgres 字符类型 

  
  字符类型 存储空间 评价 描述 
char 1 字节 SQL92-兼容 单字符 
char(n) (4+n) 字节 SQL92-兼容 定长,不足补空白 
text (4+x) 字节 最优 变长 
varchar(n) (4+n) 字节 SQL92-兼容 变长,有局限 


另外还有一种定长字符类型. name 类型,该类型只有一个用途,就是提供给Postgres 一个特别的类型用于内部名字.该类型通常不是给一般用户使用的.该类型长度当前定为32字符长,但可以使用 NAMEDATALEN 重新定义.这个(变量)是在编译的时候设置的,在以后的版本可能会改变. 

表 3-6. Postgres 特殊字符类型 
  字符类型 存储空间 描述 
name 32 字节 32字节内部类型 



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

日期/时间类型
PostgreSQL 支持 SQL 中所有的日期和时间类型。 
表 3-7. Postgres 日期/时间类型 
  类型 描述 存储 最早 最晚 精度 
timestamp 用于包含日期和时间的数据 8 bytes 4713 BC AD 1465001 1 microsec / 14 digits 
interval 用于时间间隔 12 bytes -178000000 years 178000000 years 1 mircosecond 
date 用于只包含日期的数据 4 bytes 4713 BC 32767 AD 1 day 
time 用于只包含时刻的数据 4 bytes 00:00:00.00 23:59:59.99 1 microsecond 


注意:为了保证和早期 PostgreSQL 版本的兼容,我们还继续提供 datetime(等效于timestamp)和timespan(等效于interval)。不过对这些类型的支持现在局限于进行一个隐含的转换,转换成timestamp 和 interval。类型abstime和 reltime 是低分辨率类型,它们被用于系统内部。我们不鼓励你在新的应用里面使用这些类型,同时我们支持合适的时候把旧应用中对应的类型转换成目前上面指明的。因为这些旧类型的部分或全部在未来的版本里可能消失。
日期/时间输入
日期和时间的输入几乎可以是任何合理的格式,包括ISO-8601,SQL-兼容的,传统 Postgres 的和其他形式的。日期输入里的月份和日子输入可以是模糊的,因此存在一个设置用来表明具体应该如何解释。命令 SET DateStyle TO 'US' 或 SET DateStyle TO 'NonEuropean' 表示设置为“月份在日子前面”,而命令 SET DateStyle TO 'European' 表示设置为“日子在月份前面”。缺省是 ISO 风格,但是缺省值可以在编译或者运行时改变。 
参阅 日期/时间支持 获取关于日期/时间输入的准确的分析规则和可识别的时区的信息。 

记住任何日期或者时间输入需要被单引号包围,就象一个文本字符串一样。 

date(日期)
下表是 date 类型可能的输入方式。 
表 3-8. PostgreSQL 日期输入 
  例子 描述 
January 8, 1999 无模糊 
1999-01-08 ISO-8601 格式,建议方式 
1/8/1999 US;在 European 模式下读做八月一日 
8/1/1999 European;在 US 模式下读做八月一日 
1/18/1999 US;在任何模式下都读做一月十八日 
1999.008 年和年里的第几天 
19990108 ISO-8601 年,月,日 
990108 ISO-8601 年,月,日 
1999.008 年和年里的第几天 
99008 年和年里的第几天 
January 8, 99 BC 公元前99年 


表 3-9. PostgreSQL 月份缩写 
  月份 缩写 
April(四月) Apr 
August(八月) Aug 
December(十二月) Dec 
February(二月) Feb 
January(一月) Jan 
July(七月) Jul 
June(六月) Jun 
March(三月) Mar 
November(十一月) Nov 
October(十月) Oct 
September(九月) Sep, Sept 


注意: 五月(May)没有缩写,原因是显而易见的。
表 3-10. PostgreSQL 星期缩写 
  星期 缩写 
Sunday(星期天) Sun 
Monday(星期一) Mon 
Tuesday(星期二) Tue, Tues 
Wednesday(星期三) Wed, Weds 
Thursday(星期四) Thu, Thur, Thurs 
Friday(星期五) Fri 
Saturday(星期六) Sat 

time(时间)
下面是有效的 time (时间)输入 
表 3-11. PostgreSQL 时间输入 
  例子 描述 
04:05:06.789 ISO-8601,所有的时间域 
04:05:06 ISO-8601 
04:05 ISO-8601 
040506 ISO-8601 
04:05 AM 与04:05一样;AM 不影响数值 
04:05 PM 与 16:05一样;输入小时数必须 <= 12 
z 与 00:00:00 一样 
zulu 与 00:00:00 一样 
allballs 与 00:00:00 一样 


带时区时间
这个类型是 SQL92 定义的,但是该定义显示出非常基本的不足,使得这个类型几乎无用。在多数情况下,date,time 和 timestamp 的组合应该能提供任何应用所需要的日期/时间功能的全部范围。 
带时区时间 接受所有对 time 类型也合法的输入,附加一个合法的时区,如下: 

表 3-12. Postgres 带时区时间输入 
  例子 描述 
04:05:06.789-8 ISO-8601 
04:05:06-08:00 ISO-8601 
04:05-08:00 ISO-8601 
040506-08 ISO-8601 


参考 Postgres 时区输入 获取时区的更多例子。 

timestamp(时标)
有效的 timestamp 类型的输入包含一个日期和一个时间的连接,后面跟着可选的 AD 或 BC,再后面跟着可选的时区。(参阅下面。)因此 
1999-01-08 04:05:06 -8:00

是一个有效的 timestamp 值,它是 ISO-兼容的。另外,已经广泛使用的格式 
January 8 04:05:06 1999 PST

也是支持的。 

表 3-13. PostgreSQL 时区输入 
  时区 描述 
PST 太平洋标准时间(Pacific Standard Time) 
-8:00 ISO-8601 与 PST 的偏移 
-800 ISO-8601 与 PST 的偏移 
-8 ISO-8601 

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

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