TIMESTAMP以UTC格式存储日期和时间对。

时区详情

TIMESTAMP有两种变种:

默认会话时区为UTC,这意味着默认情况下TIMESTAMP WITH TIME ZONE值以UTC显示。

这两种类型之间的区别在于TIMESTAMP WITH TIME ZONE使用客户端的会话时区,而另一种则不然。这样的情况也可以扩展到基于TIMESTAMP WITH TIME ZONE值的函数,如now()extract()等。

最佳实践

我们建议始终使用... WITH TIME ZONE,因为... WITHOUT TIME ZONE变量有时会在忽略会话偏移以导致意想不到的行为。不过,我们还建议你避免为数据库设置会话时间。

别名

在CockroachDB中有以下别名:

语法

TIMESTAMP/ TIMESTAMPTZ类型的常量值可以使用解释文字表示,或者使用类型TIMESTAMP / TIMESTAMPTZ注释的字符串文字或强制类型为TIMESTAMP / TIMESTAMPTZ来表示。

TIMESTAMP常量可以使用以下字符串文字格式表示:

Format Example
Date only TIMESTAMP '2016-01-25'
Date and Time TIMESTAMP '2016-01-25 10:10:10.555555'
ISO 8601 TIMESTAMP '2016-01-25T10:10:10.555555'

要表示TIMESTAMPTZ值(使用UTC的时区偏移),请使用 格式如下:TIMESTAMPTZ'2016-01-25 10:10:10.555555-05:00'

当它是明确的时,一个简单的未注释的字符串文字也可以自动解释为类型TIMESTAMPTIMESTAMPTZ

请注意,小数部分是可选的,并且四舍五入到微秒(十进制后的6位数),以便与PostgreSQL wire协议兼容。

大小

TIMESTAMP列支持最大12个字节宽度的值,但由于CockroachDB元数据因素,总存储大小可能更大。

示例

> CREATE TABLE timestamps (a INT PRIMARY KEY, b TIMESTAMPTZ);

> SHOW COLUMNS FROM timestamps;
+-------+--------------------------+-------+---------+
| Field |           Type           | Null  | Default |
+-------+--------------------------+-------+---------+
| a     | INT                      | false | NULL    |
| b     | TIMESTAMP WITH TIME ZONE | true  | NULL    |
+-------+--------------------------+-------+---------+
(2 rows)
> INSERT INTO timestamps VALUES (1, TIMESTAMPTZ '2016-03-26 10:10:10-05:00'), (2, TIMESTAMPTZ '2016-03-26');

> SELECT * FROM timestamps;
+---+---------------------------+
| a |             b             |
+---+---------------------------+
| 1 | 2016-03-26 15:10:10+00:00 |
| 2 | 2016-03-26 00:00:00+00:00 |
+---+---------------------------+
# Note that the first timestamp is UTC-05:00, which is the equivalent of EST.

支持的转换

TIMESTAMP 可以被转换为以下数据类型:

Type Details
INT 转换为Unix时间至今的秒数(1970年1月1日)
SERIAL 转换为Unix时间至今的秒数(1970年1月1日)
DECIMAL 转换为Unix时间至今的秒数(1970年1月1日)
FLOAT 转换为Unix时间至今的秒数(1970年1月1日)
TIME New in v2.0:转换为时间戳的时间部分(HH:MM:SS)
DATE ––
STRING ––

由于SERIAL数据类型表示由CockroachDB自动生成以唯一标识行的值,因此你无法将其他数据类型有意义地转换为SERIAL值。

See Also

Data Types