📅  最后修改于: 2020-11-30 07:40:28             🧑  作者: Mango
在本节中,我们将了解PostgreSQL Time数据类型的工作方式。我们还看到了Time数据类型的示例,还看到了一些可访问的时间函数,这些函数有助于我们更有效地处理时间值。
在PostgreSQL中,下一个数据类型是TIME ,它存储“天的时间”值。
PostgreSQL时间数据类型涉及8个字节的存储空间和最多6位精度,时间数据类型的范围从00:00:00到24:00:00。
注意:此处,精度用于定义放置在第二个字段中的小数位数。
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数据类型如何工作。
我们将在CREATE命令的帮助下创建一个新表作为Work_schedules ,并使用INSERT命令插入一些值。
要将Work_schedules创建到Organization数据库中,请使用CREATE命令。
Work_schedules表包含各个列,例如Comapny_id,Working_schedule,Login和Logout ,对于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以及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
我们具有以下时间函数,例如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部分中,我们学习了以下主题: