PostgreSQLtimestamp-PostgreSQL教程|
PostgreSQL timestamp
在本节中,我们将了解PostgreSQL timestamp数据类型的工作原理。我们还看到了Timestamp 数据类型的**示例,我们还看到了一些可访问的timestamp函数,如NOW()、CURRENT_TIMESTAMP、CURRENT_TIME、TIMEOFDAY() 和 timezone(zone, timestamp),它们帮助我们更有效地处理时间值。
什么是 PostgreSQL timestamp数据类型?
在 PostgreSQL 中,下一个数据类型是TIMESTAMP,它可以存储TIME和DATE值。但它不支持任何时区数据。这意味着当我们转换我们的数据库服务器的时区时,timestamp值将存储在数据库中,不能重复修改。
在PostgreSQL中,TIMESTAMP数据类型分为两种时间数据类型,分别如下:
- timestamp
- timpstamptz
timestamp:timestamp数据类型不使用时区一。
Timestamptz:timestamptz 数据类型与时区一起使用。
笔记:
- 该timestamptz数据类型是一个时区相关的日期和时间数据类型,它是与时区的timestamp。
- timestamp和timestamptz存储在8个字节存储的timestamp值的,因为我们可以在下面的命令看到:
SELECT typname, typlen
FROM pg_type
WHERE typname ~ '^timestamp';
输出
执行完上述命令后,我们将得到以下输出,我们可以看到timestamp 和timestamptz数据类型都存储了8 个字节的timestamp值。
在 PostgreSQL 中,timestamptz数据类型存储在UTC 值中:
- 如果我们在 timestamptz 列中插入一个值,PostgreSQL 会将 timestamptz 值更改为UTC 值并将UTC 值存储在表中。
- 如果我们从数据库请求timestamptz,PostgreSQL 会将UTC 值更改回由数据库服务器、当前数据库连接或用户建立的时区。
- 并且 PostgreSQL 不包含任何带有timestamp的**时区**数据
PostgreSQL Timestamp 数据类型的语法
PostgreSQL Timestamp 数据类型的语法如下:
TIMESTAMP;
OR
TIMESTAMPTZ;
PostgreSQL TIMESTAMP 数据类型示例
让我们看一个示例示例,以了解PostgreSQL timestamp和timestamp记数据类型的工作原理。
我们正在创建一个新表作为ts_demo,它包含带有 CREATE 命令帮助的timestamp和timestamp记数据类型,并使用 INSERT 命令插入一些值。
要在Javatpoint 数据库中创建ts_demo,我们使用CREATE命令。
所述ts_demo表包含两列如TS1 TIMESTAMP和TS2 TIMESTAMPTZ,如图以下命令:
CREATE TABLE ts_demo (
ts1 TIMESTAMP,
ts2 TIMESTAMPTZ
);
输出
在执行上述命令时,我们将收到以下消息:ts_demo表已成功创建。
当ts_demo表创建成功后,我们将数据库服务器的时区设置为Australia/Darwin,如下命令所示:
SET TIMEZONE ='Australia/Darwin';
输出
执行上述命令后,我们将得到如下消息窗口,显示时区设置成功。
如果我们想查看当前时区,可以使用如下命令,如下图:
SHOW TIMEZONE;
输出
执行上述命令后,我们将得到以下输出:
成功将时区设置为澳大利亚/达尔文后,我们将在INSERT命令的帮助下向其中插入一些值。
INSERT INTO ts_demo (ts1, ts2)
VALUES('2020-10-05 14:01:10-08',
'2020-10-05 14:01:10-08');
输出
执行上述命令后,我们将得到以下消息窗口,显示特定值已成功插入到ts_demo表中。
创建并插入ts_demo 表的值后,我们将使用SELECT命令返回ts_demo表的所有行:
SELECT ts1, ts2
FROM ts_demo;
输出
成功执行上述命令后,我们将得到以下输出,其中显示了ts_demo表中的timestamp值:
之后,我们将再次将当前会话的时区修改为Asia/Calcutta,如以下命令所示。
SET TIMEZONE = 'Asia/Calcutta';
输出
执行上述命令后,我们将看到以下消息窗口,显示新时区已成功设置。
然后,我们将使用SELECT命令查看ts_demo表中的现有数据:
SELECT ts1, ts2
FROM ts_demo;
输出
成功执行上述命令后,我们将检索到以下结果:
我们可以看到,无论是输出值的中timestamp*列不修改,但在价值timestamptz列可以基于新的时区改变“Asia/Calcutta”。
注意:通常,我们将使用 timestamptz 数据类型来存储timestamp数据值,因为它总是一个很好的练习。
PostgreSQL timestamp函数
我们有以下timestamp函数,例如NOW()、CURRENT_TIMESTAMP、CURRENT_TIME、TIMEOFDAY(),**使用 PostgreSQL 中可用的时间值上的 timezone(zone, timestamp)函数将时间值转换为不同的时区,这有助于我们增强我们使用timestamp数据类型时的性能**。
让我们看不同的例子来理解PostgreSQL timestamp函数是如何工作的。
获取当前时间
我们可以使用NOW()函数来检索当前timestamp。
要返回数据库服务器的当前timestamp,我们可以使用以下命令:
SELECT NOW();
输出
执行上述命令后,我们将借助输出中的NOW() 函数获取当前timestamp,如下所示:
或者我们也可以使用CURRENT_TIMESTAMP函数来获取带时区的当前timestamp:
SELECT CURRENT_TIMESTAMP;
输出
执行上述命令后,我们将在输出中使用CURRENT_TIMESTAMP函数获取当前带时区的timestamp,如下所示:
我们可以使用CURRENT_TIME函数,它可以帮助我们在没有日期的情况下检索当前时间。
注意:CURRENT_TIMESTAMP 和 CURRENT_TIME 这两个函数都是用来返回当前时间和时区的。
在 PostgreSQL 中,我们还可以借助timeofday()函数以字符串格式检索一天中的时间,如下面的命令所示:
SELECT TIMEOFDAY();
输出
成功执行上述命令后,我们将在输出中使用TIMEOFDAY() 函数获取字符串格式的时间,如下所示:
时区之间的修改
我们可以使用timezone(zone, timestamp)函数将timestamp更改为另一个时区。
以下语法用于将时间更改为不同的时区:
SELECT timezone(zone, timestamp) ;
首先,我们将在以下命令的帮助下查看当前时区,如下所示:
SHOW TIMEZONE;
输出
执行上述命令后,我们将得到以下输出,显示当前时区是数据库服务器中的亚洲/加尔各答:
让我们看一个示例以更好地理解。
现在,我们使用timezone()函数将当前时区修改为2020-10-06 00:00为澳大利亚/悉尼时区,如以下命令所示:
SELECT timezone('Australia/Sydney','2020-10-06 02:14');
输出
执行上述命令后,我们将获得以下输出,该输出显示基于澳大利亚/悉尼时区的修改时间:
注意:如果我们将timestamp作为字符串提供给 timezone() 函数,PostgreSQL 会间接执行timestamp。
将timestamp值直接转换为timestamptz数据类型,因为它始终是一种很好的方法,如下面的命令所示:
SELECT timezone('America/New_York','2016-06-01 00:00'::timestamptz);
输出
成功执行上述命令后,我们将得到以下输出,该输出显示的是时间戳记数据类型的转换时间,没有时间。
概述
在PostgreSQL Timestamp 数据类型部分,我们学习了以下主题:
- PostgreSQL的timestamp数据类型用于存储时间和日期的值用于指定列。
- 我们使用了不同的TIMESTAMP 函数,例如NOW()、CURRENT_TIMESTAMP、CURRENT_TIME、TIMEOFDAY() 和 timezone(zone, timestamp)来增强和处理特定表中的 TIME 和 DATE 值。
- 我们可以使用 timezone(zone, timestamp) 函数将Timestamp 值更改为不同的时区。
相关文章:
- [PostgreSQL教程]PostgreSQL教程-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL特性-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL版本-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL语法-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL选择数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除数据库-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL创建表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL删除/删除表-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL显示表-PostgreSQL教程|
相关推荐:
- [PostgreSQL教程]PostgreSQL与SQLite-PostgreSQL教程|
- [PostgreSQL教程]MongoDB与PostgreSQL-PostgreSQL教程|
- [PostgreSQL教程]psqlcommands-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLDate&TimeFunction-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLFunctions-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL禁用触发器-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL左连接-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQLANDCondition-PostgreSQL教程|
- [PostgreSQL教程]PostgreSQL获取子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQL与Oracle-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQL与SQLServer-PostgreSQL教程|
- MongoDB与PostgreSQL-PostgreSQL教程|
- PostgreSQLEXCEPT-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- psqlcommands-PostgreSQL教程|
- PostgreSQLDate&TimeFunction-PostgreSQL教程|
- PostgreSQL删除触发器-PostgreSQL教程|
- PostgreSQLOrderby子句-PostgreSQL教程|
- PostgreSQL与SQLite-PostgreSQL教程|
- PostgreSQLINTERSECT-PostgreSQL教程|
- PostgreSQLAlias-PostgreSQL教程|
- PostgreSQLNot-NullConstraint-PostgreSQL教程|
- PostgreSQL与MariaDB-PostgreSQL教程|
- PostgreSQLUnion-PostgreSQL教程|
- PostgreSQLMulti-columnIndexes-PostgreSQL教程|
- PostgreSQL左连接-PostgreSQL教程|