PostgreSQL 时间

17 Mar 2025 | 6 分钟阅读

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

什么是 PostgreSQL 时间数据类型?

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

PostgreSQL 时间数据类型需要 8 字节的存储空间,精度高达 6 位,时间数据类型的范围从 00:00:00 到 24:00:00。

注意:这里的精度用于定义秒字段中放置的小数位数。

PostgreSQL 时间数据类型的语法

PostgreSQL 时间数据类型语法如下

通常,我们将使用以下 TIME 格式,如下所示

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

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

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

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

现在,我们将看到带精度的时间格式值的示例

注意:通常,PostgreSQL 接受几乎所有合理的时间格式,包括 SQL 兼容、ISO 8601 等。

PostgreSQL TIME 数据类型的示例

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

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

要在 Organization 数据库中创建 Work_schedules,我们使用 CREATE 命令。

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

输出

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

PostgreSQL Time

Work_schedules 表成功创建后,我们将使用 INSERT 命令向其中插入一些值。

输出

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

PostgreSQL Time

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

输出

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

PostgreSQL Time

带时区的 PostgreSQL TIME 类型

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

要声明数据类型为 TIME with time zone 的列,我们将使用以下语法

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

以下示例用于显示 TIME with time zone 值:

PostgreSQL 时间函数示例

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

让我们看不同的示例来理解 PostgreSQL 时间函数的工作原理。

  • 获取当前时间

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

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

输出

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

PostgreSQL Time

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

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

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

输出

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

PostgreSQL Time

注意:如我们在这两个语句中看到的,如果我们在没有精度的情况下定义 CURRENT_TIME 函数,它将返回具有完整可用精度的时间值。

  • 获取本地时间

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

输出

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

PostgreSQL Time

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

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

输出

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

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

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

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

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

输出

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

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

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

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

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

让我们看一个示例,其中我们尝试将 EXTRACT() 函数与 CURRENT_TIME(precision) 函数一起使用到 SELECT 命令

输出

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

PostgreSQL Time
  • 时间值上的算术运算

在 PostgreSQL 中,我们可以对时间值以及时间值和间隔值之间使用算术运算符,例如 +、- 和 *

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

输出

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

PostgreSQL Time

如果我们想在本地时间中添加 3 小时,我们将使用以下命令

输出

执行上述命令后,我们将获得以下结果

PostgreSQL Time

注意:在上述示例中,时间值是时间值和间隔值之和。

概述

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

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