日期/时间数据类型在PostgreSQL中用来存储日期和时间数据。朱利安日期在PostgreSQL中用于不同类型的日期和时间计算。最常用的1月至12月的日历使用朱利安日期。在PostgreSQL中使用五种不同的数据类型来存储日期和时间数据。它们是日期、时间、时间戳、带时区的时间 和间隔。这些数据类型的大小和用途已经显示在下面。
日期数据类型。
它用于在数据库表的日期字段中存储日历日期值。它需要4个字节来存储数据。PostgreSQL数据库表支持不同的日期输入格式和日期输出格式,具体解释如下。
日期输入格式。
一些常用的日期输入格式在下面给出。
| 格式 | 说明 |
|---|---|
| 2022年5月18日,星期三 | 它使用完整的工作日名称、月份的完整名称、月份的一天和年份。 |
| 2022年5月18日 | 它使用月的全称、月的日期和年。 |
| 2022-05-18 | 它使用标准的ISO-8601格式,包含数字的年、月、日。 |
| 5/18/2022 | 它使用非欧洲(美国)格式,包含数字月、日和年。 |
| 18/5/2022 | 它使用的是欧洲格式,包含数字的天、月和年 |
日期输出格式。
以下是PostgreSQL中使用的日期输出格式。
| 格式 | 说明 |
|---|---|
| PostgreSQL | 它使用原始的PostgreSQL格式。 |
| 例子。Wed 18 May 11:30:00 2022 PST | |
| SQL格式 | 它使用传统的SQL格式。 |
| 例子:05/18/2022 11:30:00.00 PST | |
| ISO | 它使用ISO-8601标准格式。 |
| 例子:2022-05-18 11:30:00-07 | |
| 德国 | 它使用德国地区的格式。 |
| 例子:18.05.2022 09:30:15.00 PST |
时间数据类型
时间和带时区值的时间需要4个字节来存储在PostgreSQL的表中的数据。下面给出了一些有效的时间格式。
| 格式 | 描述 |
|---|---|
| 06:30 | 它使用ISO-8601标准格式。 |
| 07:20 AM | 它与07:20类似。 |
| 07:20 PM | 它类似于19:20。 |
| 15:15 | 它类似于下午03:15。 |
以下是一些有效的时区格式。
| 格式 | 描述 |
|---|---|
| 03:45:20-5 | 它使用ISO-8601标准格式,打印出比格林尼治标准时间晚7个小时。 |
| 03:45:20-05:30 | 它使用ISO-8601标准格式,比格林尼治标准晚7小时30分钟。 |
| 03:45:20-0530 | 它使用ISO-8601标准格式,打印出比格林尼治标准时间晚7小时30分钟。 |
Timestamp数据类型。
带有时区值的时间戳需要8个字节来在PostgreSQL的表中存储数据。下面给出了一些有效的时间戳格式。
| 格式 | 描述 |
|---|---|
| 2022-05-25 12:25-7 | 它使用ISO-8601日期格式的分钟和PST时区。 |
| 25/05/2022 12:30:20.100 | 它使用欧洲的日期格式,带有微秒。 |
| 05/25/2022 21:30 | 它使用美国的日期格式,分钟为24小时制。 |
| 25.05.2022 20:45:125 pm | 它使用的是德国地区的日期格式,包括秒和下午。 |
前提条件。
在执行本教程中的SQL语句之前,你必须在Linux操作系统上安装最新版本的PostgreSQL包。运行下面的命令来安装和启动PostgreSQL。
sudosystemctl start postgresql.service
运行下面的命令,以root权限登录到PostgreSQL。
$ sudo -upostgres psql
日期和时间的PostgreSQL的例子。
运行下面的SELECT语句来读取特定的日期。
# SELECTdate('2022-05-25')。
运行下面的SELECT语句来读取当前的日期和时间。
# SELECT now();
运行下面的SELECT语句来读取当前日期。
# SELECT current_date;
运行下面的SELECT语句来读取当前的时间。
# SELECT current_time;
执行上述命令后会出现以下输出。

使用数据和时间数据类型创建一个表。
在创建任何具有布尔数据类型的表之前,你必须先创建一个PostgreSQL数据库。因此,运行下面的命令来创建一个名为**"testdb "的数据库。**
# CREATE DATABASE testdb;
创建数据库后会出现以下输出。

在当前数据库中创建一个名为**'orders'的表,有五个字段。第一个字段名是invoice_id,数据类型是INT**,它是表的主键。第二个字段名是order_date,数据类型是DATE。第三个字段名是order_time,数据类型是TIME。第四个字段名是customer_id,数据类型是VARCHAR(6)。第五个字段名是entry_time,数据类型是TIMESTAMP。
CREATE TABLE orders(
Invoice_id INT PRIMARY KEY,
order_date DATE,
order_time TIME,
customer_id VARCHAR(6),
entry_time TIMESTAMP);
如果表被成功创建,将出现以下输出。

运行下面的插入查询,将向订单表插入三条记录。order_date值是以ISO-8601格式给出的。order_time值是以ISO-8601格式给出的。entry_time字段中使用了current_timestamp值,它将以ISO-8601日期格式插入微秒的时间戳值。
INSERT INTO orders
VALUES
(11785645,'2022-05-18', '10:30 AM','785634', current_timestamp),
(11895634,'2022-05-17','11:33 AM','856345', current_timestamp),
(11128976,'2022-05-10','08: 30 PM','906745', current_timestamp);
执行上述查询后会出现以下输出。

运行下面的选择查询,从订单表中读取所有记录。
SELECT*FROM orders;
执行上述查询后,将出现以下输出。

结论。
为了在PostgreSQL表中正确地存储日期和时间数据,需要有日期和时间数据类型。PostgreSQL数据库支持不同格式的日期、时间和时间戳数据类型,以便在表中存储日期和时间数据。这些日期和时间数据类型的用途已在本教程中通过创建一个表显示出来,这将有助于PostgreSQL新用户通过使用这些数据类型来创建表。