名字 | 存储空间 | 描述 | 最低值 | 最高值 | 分辨率 |
timestamp [(p)] [without time zone] | 8 字节 | 日期和时间 |
|
|
|
timestamp [(p)] with time zone | 8 字节 | 日期和时间,带时区 |
|
|
|
interval [(p)] | 12 字节 | 时间间隔 |
|
|
|
date | 4字节 | 只用于日期(年月日) |
|
|
|
time [(p)] [without time zone] | 8 字节 | 只用于一日内时间(时分秒、毫秒) | 00:00:00 | 24:00:00 |
|
time [(p)] with time zone | 12 字节 | 只用于一日内时间,带时区 | 00:00:00+1459 | 24:00:00-1459 |
|
(p)表示一个可选的精度值,以指明秒域中小数部分的位数。
date、timestamp、time、interval类型可以直接进行数值逻辑计算,以及进行条件过滤
SQL 标准通过"+"或者"-"是否存在来区分 timestamp without time zone 和 timestamp with time zone 文本,因此TIMESTAMP '2004-10-19 10:23:54'是一个 timestamp without time zone ,而TIMESTAMP '2004-10-19 10:23:54+02'是一个 timestamp with time zone
任何date、time、timestamp或者interval的文本输入需要由单引号包围,就像一个字符串常量一样。SQL 要求使用下面的语法:
type [(p)] 'value'
其中的 'value' 将会被转换为 type 类型的常量。如果不存在该常量所属类型的歧义,那么可以省略明确的类型转换
date
日期类型,仅可以表示“年月日”内容。如果将timestamp类型的值赋值给date型,则只会保留“年月日”内容。
输入示例:
建议使用类似1999-01-08格式
time
当日时间类型,即表示当天“时分秒/毫米”内容。
只写 time 等效于 time without time zone。
输入示例:
04:05:06.789
04:05:06
04:05
040506
timestamp
时间戳类型可以理解为是date+time,表示完成的“年月日 时分秒/毫秒”的时间。
时间戳类型的有效输入由一个日期和时间的连接组成,后面跟着一个可选的时区,一个可选的 AD 或 BC 。另外,AD/BC 可以出现在时区前面,但这个顺序并非最佳的。因此下面两种方式都是有效值。
2004-10-19 10:23:54和2004-10-19 10:23:54+02
interval
interval类型表示一个时间间隔,即date – date、date – timestamp、timestamp – timestamp、time – time的类型。
timestamp – time、date – time类型为timestamp
interval 数值可以用下面的语法声明:
[@] quantity unit [quantity unit...] [direction]
quantity 是一个数字(可能有符号);
unit 是 millisecond ,second, minute, hour, day, week, month, year, decade, century, millennium 或者这些单位的缩写或复数;
direction 可以是 ago 或者为空。
@ 符号是一个可选的东西。不同的单位以及相应正确的符号都是隐含地增加的。
day、hour、minute、second的数量可以在无明确单位标记的情况下声明。比如,'1 12:59:10' 和 '1 day 12 hours 59 min 10 sec' 读数一样。