PostgreSQL教程

PostgreSQL 时间戳

在本节中,我们将了解PostgreSQL时间戳数据类型的工作原理。我们还看到了Timestamp数据类型的示例,并且还看到了一些可访问的时间戳函数,例如 NOW(),CURRENT_TIMESTAMP,CURRENT_TIME,TIMEOFDAY()和timezone(zone,timestamp),这有助于我们更有效地处理时间值。

什么是PostgreSQL时间戳数据类型?

在PostgreSQL中,下一个数据类型是 TIMESTAMP ,它可以存储 TIME DATE 值。但它不支持任何 时区数据。这意味着当我们转换数据库服务器的 时区时, 时间戳值将存储在数据库中,并且不能重复修改。
在PostgreSQL中,TIMESTAMP数据类型分为 两种时间数据类型,如下:
timestamp timpstamptz
Timestamp: : 使用时间戳数据类型 ,不带时区
Timestamptz: : timestamptz数据类型用于带有时区的
注意:
timestamptz数据类型是与时区相关的日期和时间数据类型,并且是具有时区的时间戳 时间戳和时间戳存储时间戳值的 8字节存储,如以下命令所示:
SELECT typname, typlen
FROM pg_type
WHERE typname ~ '^timestamp'; 
输出
执行完上述命令后,我们将获得以下输出,在其中我们可以看到 timestamp和timestamptz 数据类型都已存储 8字节时间戳值。
PostgreSQL时间戳
在PostgreSQL中, timestamptz 数据类型存储在 UTC值中:
如果我们在timestamptz列中插入一个值,则PostgreSQL会将timestamptz值更改为 UTC值,并将UTC值存储在表中。 PostgreSQL将 UTC值改回由数据库服务器,当前数据库连接或用户(如果我们要求 timestamptz 时区 >来自数据库。 并且PostgreSQL不包含带有 timestamptz 的任何 时区数据

PostgreSQL时间戳数据类型的语法

PostgreSQL时间戳数据类型的语法如下:
TIMESTAMP; 
OR
TIMESTAMPTZ;

PostgreSQL TIMESTAMP数据类型的示例

让我们看一个示例示例,以了解 PostgreSQL时间戳和timestamptz数据类型的工作原理。
我们正在创建一个新表,作为 ts_demo ,其中包含 timestamp timestamptz 数据类型, CREATE命令的帮助,并使用INSERT命令插入一些值。
要在 lidihuo数据库中创建 ts_demo 使用 CREATE 命令。
ts_demo 表包含两列,例如 ts1 TIMESTAMP ts2 TIMESTAMPTZ ,如以下命令所示:
CREATE TABLE ts_demo (
    ts1 TIMESTAMP, 
    ts2 TIMESTAMPTZ
);
输出
在执行上述命令时,我们将得到以下消息: ts_demo 表具有已成功创建。
PostgreSQL时间戳
ts_demo 表创建成功,我们将数据库服务器的 时区设置为 Australia/Darwin ,如以下命令所示:
SET TIMEZONE ='Australia/Darwin';
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示时区已成功设置。
PostgreSQL时间戳
如果要查看 当前时区,可以使用以下命令,如下所示:
SHOW TIMEZONE;
输出
执行上述命令后,我们将获得以下输出:
PostgreSQL Timestamp
在将时区成功设置为 Australia/Darwin 后,我们将使用 INSERT 命令将一些值插入其中帮助。
INSERT INTO ts_demo (ts1, ts2)
VALUES('2020-10-05 14:01:10-08',
       '2020-10-05 14:01:10-08');
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示特定值已成功插入 ts_demo 表。
PostgreSQL时间戳
创建并插入 ts_demo表的 值,我们将使用 SELECT 命令返回 ts_demo 的所有行>表格:
SELECT ts1, ts2
FROM ts_demo;
输出
成功执行以上命令后,我们将获得以下输出,其中显示 ts_demo 表:
PostgreSQL时间戳
此后,我们将再次修改当前会话的时区为 Asia/Calcutta ,如以下命令所示。
SET TIMEZONE = 'Asia/Calcutta';
输出
在执行上述命令时,我们将获得以下消息窗口,其中显示新时区已成功设置。
PostgreSQL时间戳
然后,我们将使用 SELECT 命令在 中查看现有数据> ts_demo 表:
SELECT ts1, ts2
FROM ts_demo;
输出
成功执行上述命令后,我们将检索以下结果:
PostgreSQL Timestamp
我们看到, timestamp 列中的两个输出值都不会修改,但是 timestamptz列中的值可以根据 'Asia/Calcutta'的新时区进行更改。
注意: 通常,我们将使用timestamptz数据类型来存储timestamp数据值,因为它总是一个很好的练习。

PostgreSQL时间戳函数

我们具有以下 时间戳函数,例如 NOW(),CURRENT_TIMESTAMP, CURRENT_TIME,TIMEOFDAY(),使用PostgreSQL中可用的时间值,使用时区(时区,时间戳) 功能,将时间值转换为其他时区帮助我们在使用timestamp数据类型时提高性能。
让我们看看不同的示例来了解 PostgreSQL时间戳功能的工作方式。

获取当前时间

我们可以使用 NOW()函数检索 当前时间戳
要返回数据库服务器的当前时间戳,我们可以使用以下命令:
SELECT NOW();
输出
执行上述命令后,我们将在 NOW()函数的帮助下获取当前时间戳 在输出中,如下所示:
PostgreSQL时间戳
或者我们可以使用 <还可以使用strong> CURRENT_TIMESTAMP 功能来获取带有时区的当前时间戳:
SELECT CURRENT_TIMESTAMP;
输出
执行上述命令后,我们将使用 CURRENT_TIMESTAMP函数获得带有时区的当前时间戳 ,如下所示:
PostgreSQL时间戳
我们可以使用 CURRENT_TIME 函数,该函数可帮助我们检索没有日期的当前时间。
注意: CURRENT_TIMESTAMP和CURRENT_TIME这两个函数都用于返回带有时区的当前时间。
在PostgreSQL中,我们还可以借助 timeofday( )检索 一天中的时间。 )功能,如以下命令所示:
SELECT TIMEOFDAY();
输出
成功执行上述命令后,我们将使用 TIMEOFDAY()函数以字符串格式获取一天中的时间在输出中,如下所示:
PostgreSQL Timestamp

时区之间的修改

我们可以使用 timezone(zone,timestamp)函数将时间戳更改为另一个时区。
以下语法用于将时间更改为不同时区:
SELECT timezone(zone, timestamp) ;
首先,我们将在以下命令的帮助下看到 当前时区wn在下面:
SHOW TIMEZONE;
输出
执行上述命令后,我们将获得以下输出,其中显示 当前时区数据库服务器中的Asia/Calcutta :
PostgreSQL Timestamp
让我们看一个示例示例为了更好地理解。
现在,我们使用 timezone()函数将 当前时区修改为 2020-10-06 00:00 澳大利亚/悉尼时区,如以下命令所示:
SELECT timezone('Australia/Sydney','2020-10-06 02:14');
输出
在执行上述命令时,我们将获得以下输出,该命令根据 澳大利亚/悉尼时区显示修改后的时间:
PostgreSQL时间戳
注意: 如果我们将时间戳记作为字符串提供给timezone()函数,则PostgreSQL将间接执行时间戳记。
直接将 timestamp 值转换为 timestamptz 数据类型,因为它总是一种非常好的方法,如以下命令所示:
SELECT timezone('America/New_York','2016-06-01 00:00'::timestamptz);
输出
成功执行上述命令后,我们将获得以下输出,该命令显示带有时间的转换时间,没有时间,并带有 timestamptz数据
PostgreSQL时间戳

概述

PostgreSQL时间戳数据类型部分,我们学习了以下主题:
PostgreSQL时间戳数据类型用于存储指定列的时间和日期值。 我们使用了不同的 TIMESTAMP函数,例如 NOW(),CURRENT_TIMESTAMP,CURRENT_TIME,TIMEOFDAY()和时区(时区,时间戳),以增强和处理特定表中的TIME和DATE值。 我们可以使用timezone(zone,timestamp)函数将 Timestamp值更改为不同的时区
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4