PostgreSQL – 时间戳数据类型
在 PostgreSQL 2 时态数据类型中,即timestamp
和timestamptz
,其中一种是没有时区的,一种是带时区的,支持将时间和日期存储到列中。 timestamp
和timestamptz
使用 8 ytes 来存储时间戳值。
Syntax: TIMESTAMP; or TIMESTAMPTZ;
现在让我们看一些例子以便更好地理解。
示例 1:
首先,我们使用以下命令创建一个包含timestamp
和timestaptz
列的表:
CREATE TABLE timestamp_demo (ts TIMESTAMP, tstz TIMESTAMPTZ);
然后我们将数据库服务器的时区设置为 Asia/Calcutta 如下:
SET timezone = 'Asia/Calcutta';
现在我们的时区已设置,我们将使用以下命令在 timestamp_demo 表中插入一个新行:
INSERT INTO timestamp_demo (ts, tstz)
VALUES
(
'2020-06-22 19:10:25-07',
'2020-06-22 19:10:25-07'
);
现在我们将使用以下命令从timestamp
和timestamptz
列中查询数据:
SELECT
ts, tstz
FROM
timestamp_demo;
输出:
示例 2:
在本例中,我们将使用timezone(zone, timestamp)
函数将 Asia/Calcutta 时区转换为 America/New_York 时timezone(zone, timestamp)
。
首先,我们使用以下命令创建一个包含timestamp
和timestaptz
列的表:
CREATE TABLE timezone_conversion_demo ( tstz TIMESTAMPTZ);
然后我们将数据库服务器的时区设置为 Asia/Calcutta 如下:
SET timezone = 'Asia/Calcutta';
现在我们的时区已设置,我们将使用以下命令在 timezone_conversion_demo 表中插入一个新行:
INSERT INTO timezone_conversion_demo ( tstz)
VALUES
(
'2020-06-22 19:10:25-07'
);
现在我们将使用以下命令从timestamp
和timestamptz
列中查询数据:
SELECT timezone('America/New_York', '2020-06-22 19:10:25');
输出: