📜  PostgreSQL时间

📅  最后修改于: 2020-11-30 07:40:28             🧑  作者: Mango

PostgreSQL时间

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

什么是PostgreSQL时间数据类型?

PostgreSQL中,下一个数据类型是TIME ,它存储“天的时间”值

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

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

PostgreSQL时间数据类型的语法

PostgreSQL Time数据类型的语法如下:

column_name TIME(precision);

通常,我们将使用以下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创建到Organization数据库中,请使用CREATE命令。

Work_schedules表包含各个列,例如Comapny_id,Working_schedule,LoginLogout ,对于Login和Logout列,我们使用Time数据类型,如以下命令所示:

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

输出量

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

成功创建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表中。

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

SELECT * 
FROM Work_schedules;

输出量

成功执行上述命令后,我们将获得以下输出,该输出显示Work_schedules表中存在的所有数据:

时区类型的PostgreSQL TIME

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

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

column TIME with time zone

带时区的TIME数据类型包含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函数获取当前时间,如下所示:

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

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

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

SELECT CURRENT_TIME(4);

输出量

执行上述命令后,我们将获得以下输出,该输出以精确的精度显示了现有时间:


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

  • 取得当地时间

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

SELECT LOCALTIME;

输出量

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

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

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

 SELECT LOCALTIME(1);

输出量

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

  • 将时间更改为其他时区

以下语法用于将时间更改为其他时区:

[TIME with time zone] AT TIME ZONE time_zone

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

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

SELECT LOCALTIME AT TIME ZONE 'PST';

输出量

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

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

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

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

EXTRACT(field FROM time_value);

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

让我们来看看,我们尝试使用提取物()函数与CURRENT_TIME(精度)函数到沿样品例如SELECT命令

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中,我们可以在时间值以及时间和间隔值之间使用+,-和*算术运算运算符

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

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

输出量

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

如果要将本地时间增加3小时,将使用以下命令:

SELECT LOCALTIME + interval '3 hours' AS Output;

输出量

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


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

总览

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

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