PostgreSQL 时间


PostgreSQL 时间

在本节中,我们将了解PostgreSQL 时间数据类型的工作原理。我们还看到了Time 数据类型的**示例**,我们还看到了一些可访问的时间函数,它们帮助我们更有效地处理时间值。

什么是 PostgreSQL 时间数据类型?

在PostgreSQL 中,下一个数据类型是TIME,它存储时间值

PostgreSQL 时间数据类型涉及8 字节存储和最多6 位精度,时间数据类型的范围从 00:00:00 到 24:00:00。

注意:这里,精度用于定义放置在第二个字段中的小数位数。

PostgreSQL 时间数据类型的语法

PostgreSQL 时间数据类型语法如下:

  1. 列名时间(精度);

一般我们会使用以下TIME格式,如下图:

HH:MM     
HH:MM:SS  
HHMMSS

或者如果我们想使用精度,那么我们将使用以下**时间格式:

MM:SS.pppppp      
HH:MM:SS.pppppp  
HHMMSS.pppppp

注意:在上述格式中,P 用于精度值。

让我们看一些TIME 值格式的示例,以便更好地理解:

首先,我们将看到不精确时间格式值的示例示例:

06:05  
06:05:04  
060504

现在,我们将看到具有精确时间格式值的示例示例:

06:59.999999  
06:05:04.333333  
060504.3333333

注意:通常,PostgreSQL 采用几乎任何合理的 TIME 格式以及 SQL 兼容、ISO 8601 等。

PostgreSQL TIME 数据类型示例

让我们看一个示例以了解PostgreSQL Time 数据类型的工作原理。

我们正在使用 CREATE 命令的帮助创建一个作为Work_schedules 的\新表,并使用INSERT 命令插入一些值。

要将Work_schedules\创建到组织数据库中,我们使用CREATE命令。

Work_schedules\表包含各列如Comapny_id,Working_schedule,登录注销,并为登录和注销列,我们使用的时间数据类型,如下面的命令所示:

CREATE TABLE Work_schedules (  
    company_id serial PRIMARY KEY,  
    Working_schedule VARCHAR NOT NULL,  
    Login TIME NOT NULL,  
    Logout TIME NOT NULL  
);

输出

执行上述命令时,我们将收到以下消息:Work_schedules\表已成功创建。

PostgreSQL 时间

Work_schedules\成功创建表,我们将插入一些值与INSERT命令的帮助。

INSERT INTO Work_schedules(Working_schedule,Login,Logout)  
VALUES  
('First shift', '09:00:00', '17:00:00'),  
 ('Second shift', '13:00:00', '21:00:00'),  
 ('Third shift', '16:00:00', '23:00:00'),  
 ('Weekend Shift', '09:00:00', '14:00:00');

输出

执行上述命令后,我们将得到以下消息窗口,其中显示特定值已成功插入到Work_schedules\表中。

PostgreSQL 时间

创建并插入Work_schedules\表的值后,我们将使用SELECT命令返回Work_schedules\表的所有行:

SELECT *   
FROM Work_schedules;

输出

成功执行上述命令后,我们将得到以下输出,其中显示了Work_schedules\表中的所有数据:

PostgreSQL 时间

具有时区类型的 PostgreSQL TIME

PostgreSQL 允许我们使用TIME 时区数据类型以及TIME 数据类型,这允许我们通过时区部署和检索一天中的时间。

要声明数据类型为带时区的 TIME列,我们将使用以下语法:

column TIME with time zone

TIME with time zone 数据类型包含12 个字节,它允许我们存储一个时间值,时区从00:00:00+1459 到 24:00:00-1459范围。

以下示例用于显示具有时区值TIME:

06:05:04 IST      
06:05:04.123-2

PostgreSQL 时间函数示例

我们有以下时间函数,例如CURRENT_TIME、CURRENT_TIME(precision)、LOCAL_TIME、LOCALTIME(precision)、EXTRACT(),将时间值转换为不同的时区,以及对 PostgreSQL 中可用的时间值使用算术运算符,这对我们有帮助在我们使用ime 数据类型时提高性能

让我们看不同的例子来理解PostgreSQL 时间函数是如何工作的。

  • 获取当前时间

我们可以使用CURRENT_TIME函数来检索当前时间和时区

要返回数据库服务器的当前时间,我们可以使用以下命令:

SELECT CURRENT_TIME;

输出

执行上述命令后,我们将在输出中借助CURRENT_TIME函数获取当前时间,如下图:

PostgreSQL 时间

我们可以使用CURRENT_TIME(precision)函数以特定的精度检索当前时间 。

让我们看一个示例以更好地理解。

以下命令用于以指定的精度获取当前时间

SELECT CURRENT_TIME(4);

输出

执行上述命令后,我们将得到以下输出,其中精确显示了现有时间:

PostgreSQL 时间

注意:正如我们在两个语句中看到的那样,如果我们定义了没有精度的 CURRENT_TIME 函数,那么它将返回一个具有完全可访问精度的时间值。

  • 获取当地时间

我们可以使用LOCALTIME 函数来检索本地时间,如下面的命令所示:

SELECT LOCALTIME;

输出

执行上述命令后,我们将得到以下输出,其中显示了本地时间:

PostgreSQL 时间

在 PostgreSQL 中,我们有LOCALTIME(precision) 函数,它用于以特定精度检索本地时间,就像我们在CURRENT_TIME(precision) 函数的帮助下找到当前时间精度一样。

在下面的示例中,我们使用LOCALTIME(precision)函数以指定的精度获取本地时间。

SELECT LOCALTIME(1);

输出

执行上述命令后,我们将得到以下输出,它以精确的精度显示本地时间:

PostgreSQL 时间

  • 将时间更改为不同的时区

以下语法用于将时间更改为不同的时区:

[TIME with time zone] AT TIME ZONE time_zone

让我们看一个示例来详细了解:

在下面的示例中,我们将尝试将本地时间更改为PST(太平洋标准时间)时区的时间,如以下命令所示:

SELECT LOCALTIME AT TIME ZONE 'PST';

输出

成功执行上述命令后,我们将得到以下输出,显示本地时间已转换为 PST 时区。

PostgreSQL 时间

  • 从时间值中提取小时、分钟、秒

我们可以使用EXTRACT 函数从时间值中提取小时、分钟、秒。

以下语法用于提取PostgreSQL 时间数据类型的小时、分钟、秒

EXTRACT(field FROM time_value);

注意:在上面的语法中,字段可以是小时、分钟、秒、毫秒。

让我们看一个示例示例,我们尝试在SELECT 命令中使用EXTRACT()函数和CURRENT_TIME(precision) 函数

SELECT CURRENT_TIME(0),  
EXTRACT (HOUR FROM CURRENT_TIME) as Hour,  
EXTRACT (MINUTE FROM CURRENT_TIME) as Minute,   
EXTRACT (SECOND FROM CURRENT_TIME) as Second,  
EXTRACT (milliseconds FROM CURRENT_TIME) as Milliseconds;

输出

执行上述命令后,我们将得到以下输出,它将CURRENT_TIME(0)提取为小时、分钟、秒和毫秒:

PostgreSQL 时间

  • 时间值的算术运算

在PostgreSQL里,我们可以用算术运算符+, - ,*,并在时间值和之间的时间和间隔时间值。

在下面的示例中,它用于返回两个时间值之间的间隔:

SELECT time '09:00' - time '03:00' AS result;

输出

执行以下命令,我们将得到以下结果,该命令显示09:00-03:00之间的时间间隔。

PostgreSQL 时间

如果我们想为本地时间增加 3 小时,我们将使用以下命令:

SELECT LOCALTIME + interval '3 hours' AS Output;

输出

执行上述命令后,我们将得到如下结果:

PostgreSQL 时间

注意:在上面的例子中,时间值是一个时间值和一个间隔值的总和。

概述

PostgreSQL 时间数据类型部分,我们学习了以下主题:

  • PostgreSQL的时间数据类型被用来存储时间值指定列。
  • 我们使用了不同的TIME 函数,例如,CURRENT_TIME、CURRENT_TIME(precision)、LOCAL_TIME、LOCAL_TIME(precision)、EXTRACT()来增强和处理特定表中的 TIME 值。
  • 我们可以将Time 值转换为不同的时区
  • 我们在时间值上使用算术运算符来找到时间间隔和时间值的总和。