日期/时间类型
【注意】在 PostgreSQL 7.3 以前,只写 timestamp 等效于 timestamp with time zone 。这是和 SQL 不兼容的。
time, timestamp, interval 接受一个可选的精度值 p 以指明秒域中小数部分的位数。没有明确的缺省精度,p 的范围对 timestamp 和 interval 类型是从 0 到大约 6 。
【注意】如果 timestamp 数值是以双精度浮点数(目前的缺省)的方式存储的,那么有效精度会小于 6 。timestamp 值是以 2000-01-01 午夜之前或之后的秒数存储的,而微秒的精度是为那些在 2000-01-01 前后几年的日期实现的,对于那些远一些的日子,精度会下降。如果timestamp 以八字节整数存储(一个编译时的选项),那么微秒的精度就可以在数值的全部范围内都可以获得。不过,八位整数的时间戳范围缩小到 4713 BC 到 294276 AD 之间。同一个编译时选项也决定 time 和 interval 值是保存成浮点数还是八字节整数。在以浮点数存储的时候,随着时间间隔的增加,大的 interval 数值的精度会降低。
对于 time 类型,如果使用了八字节的整数存储,那么 p 允许的范围是从 0 到 6 ,如果使用的是浮点数存储,那么这个范围是 0 到 10 。
time with time zone 类型是 SQL 标准定义的,但是完整定义的有些方面会导致有问题的用法。在大多数情况下,date, time, timestamp without time zone, timestamp with time zone 的组合就应该能提供一切应用需要的日期/时间的完整功能。
abstime 和 reltime 类型是低分辨率类型,它们被用于系统内部。我们反对你使用这些类型,因为这些旧类型的部分或全部可能会在未来的版本里消失。
Python学习网,大量的免费PostgreSQL入门教程,欢迎在线学习!