PostgreSQL timestamp PostgreSQL 时间 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 间隔