PostgreSQL 日期


PostgreSQL 日期

在本节中,我们要了解的工作PostgreSQL的日期数据类型,例子中的日期数据类型,以及一些访问日期的功能,我们能够处理哪些帮助日期值更有效。

什么是 PostgreSQL 日期数据类型?

PostgreSQL 中的另一种数据类型是DATE,用于存储日期值

在PostgreSQL 中,Date 数据类型格式为YYYY-MM-DD,这有助于我们将日期记录存储并插入到日期列中

Date 数据类型涉及4 个字节的存储大小。日期数据类型的最小和最大范围从4713 BC 到 5874897 AD1000-01-01 到 9999-12-31

如果我们想在创建包含 Date 列的新表时使用当前日期作为列的默认值,我们可以在DEFAULT关键字之后使用CURRENT_DATE

PostgreSQL 日期数据类型示例

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

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

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

记录\表包含各列如Records_id,标题和Submission_date,并为Submission_date列,我们使用DATE数据类型,并接受当前日期默认值

CREATE TABLE Records (  
Records_id serial PRIMARY KEY,  
Heading VARCHAR NOT NULL,  
Submission _date DATE NOT NULL DEFAULT CURRENT_DATE  
);

输出

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

PostgreSQL 日期

Records\表创建成功后,我们将在INSERT命令的帮助下向其中插入一些值。

INSERT INTO Records (Heading)  
VALUES  
('Invoice to Client ABC'),  
('Invoice to Client PQR'),  
('Invoice to client XYZ');

输出

执行上述命令后,我们将得到如下消息窗口,显示指定的值已成功插入到Records\表中。

PostgreSQL 日期

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

SELECT *   
FROM Records;

输出

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

PostgreSQL 日期

注意:根据数据库服务器的当前日期,我们可能会得到不同的Submission_date 值。

PostgreSQL 日期函数示例

我们有以下日期函数,例如NOW()、AGE()、EXTRACT()、TO_CHAR() 等,在 PostgreSQL 中可用,它们有助于我们在使用Date 数据类型时提高性能。

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

首先,我们使用 CREATE 命令的帮助创建作为Student_details 的\新表,并使用 INSERT 命令插入一些值。

我们将使用CREATE命令将Student_details\创建到组织数据库中

Student_details\表包含以下列Student_Id、Stu_first_name、Stu_last_name、Date_of_birth 和Admission_date 列,其中Date_of_birth 和Admision_date包含DATE数据类型。

CREATE TABLE Student_details (  
    Student_Id serial PRIMARY KEY,  
    Stu_first_name VARCHAR,  
    Stu_last_name VARCHAR ,  
    Date_of_birth DATE NOT NULL,  
    Admission_date DATE NOT NULL  
);

输出

执行上述命令时,我们将收到以下消息,显示Student_details\表已成功创建到组织数据库中。

PostgreSQL 日期

一旦生成了Student_details\表,我们将使用 INSERT 命令向其中插入一些值。

INSERT INTO Student_details(Stu_first_name, Stu_last_name,  
Date_of_birth, Admission_date)  
VALUES   
('Mike','Smith','1994-10-22','2018-08-11'),  
('William','Davis','1990-08-12','2018-08-10'),  
('Susan','Brown','1991-02-28','2018-07-10'),  
('Hannah','Beker','1995-12-13','2018-08-11'),  
('Margaret','Wilson','1994-04-25','2018-07-12')  
;

输出

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

PostgreSQL 日期

一旦我们完成了Student_details\表的创建和插入,我们将看到以下日期数据类型函数:

以年、月和日为单位评估年龄

我们可以使用AGE()函数以年、月和日为单位分析当前日期的年龄。

例如:在下面的命令中,我们使用AGE() 函数Student_details\表中计算学生的年龄。

SELECT Student_id, Stu_first_name,  
Stu_last_name, AGE(Date_of_birth)  
FROM Student_details;

输出

执行上述命令后,我们将得到以下输出,其中显示了所有具有 AGE() 函数的学生的年龄。

PostgreSQL 日期

假设我们将一个日期值传递给AGE() 函数,它将从现有日期中减去该日期值。如果我们向 AGE() 函数传递两个参数,它将从初始参数中取出第二个参数。

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

在下面的示例中,我们将尝试检索2010-10-08学生的年龄,如以下命令所示:

SELECT Student_id, Stu_first_name,  
Stu_last_name, AGE('2010-10-08',Date_of_birth)  
FROM Student_details;

输出

成功执行上述命令后,我们将得到以下输出,其中显示了指定日期值上所有学生的年龄

PostgreSQL 日期

从日期值中提取年、季度、月、周、日

我们可以使用EXTRACT()函数从日期值中检索年、季度、月、周、日,

例如:在下面的命令中,我们将从学生的出生日期中提取年、月和日:

SELECT Student_id, Stu_first_name,  
Stu_last_name,   
EXTRACT (YEAR FROM Date_of_birth) AS YEAR,  
EXTRACT (MONTH FROM Date_of_birth) AS MONTH,  
EXTRACT (DAY FROM Date_of_birth) AS DAY  
FROM Student_details;

输出

执行上述命令,我们将得到以下结果,分别显示年、月和日值。

PostgreSQL 日期

获取当前日期

我们可以使用内置的 NOW() 函数来检索当前日期和时间。如果我们使用双冒号(::) 将DATETIME值转换为DATE值,我们只能检索没有时间部分的日期列记录。

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

SELECT NOW()::date;

输出

执行上述命令后,我们将借助输出中的NOW() 函数获取当前日期,如下所示:

PostgreSQL 日期

有一种获取当前日期以使用CURRENT_DATE的附加方法,如下所示:

SELECT CURRENT_DATE;

输出

执行上述语句后,我们将得到以下输出,该输出显示基于数据库服务器的当前日期

PostgreSQL 日期

注意:输出采用以下格式:YYYY-MM-DD。虽然,我们可以得到各种格式的日期值的结果。

获取两个日期之间的间隔

我们可以使用减号 (-) 运算符来检索两个日期之间的间隔。

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

下面的命令用于通过从当前或今天的日期减去admission_date列中的值来获得学生的总天数

SELECT Stu_first_name, Stu_last_name,  
NOW() - Admission_date as Difference  
FROM Student_details;

输出

执行上述命令后,我们将得到以下输出:

PostgreSQL 日期

以特定格式获取 PostgreSQL 日期值的输出

我们可以使用TO_CHAR() 函数以特定格式获取日期值输出。而TO_CHAR()函数用于带两个参数。

第一个参数是价值,我们希望的格式,而另外一个模板是指定的输出格式

在下面的示例中,我们将在以下命令的帮助下以以下格式显示当前日期:YYYY/MM/DD

SELECT TO_CHAR(NOW() :: DATE, 'YYYY/MM/DD');

输出

成功执行上面的命令后,我们会得到一个类似的日期格式,我们在上面的语句中提到过:

PostgreSQL 日期

或者,如果我们想查看以下格式的日期,我们可以使用以下命令:SEP 29, 2020:

SELECT TO_CHAR(NOW() :: DATE, 'MON DD, YYYY');

输出

执行上述命令后,我们将得到以下结果,其显示的格式与我们在上述语句中提供的格式相同:

概述

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

  • PostgreSQL的日期数据类型用于存储的时间值以用于指定列。
  • 我们使用了不同的 DATE 函数,例如NOW()、AGE()、EXTRACT() 和 TO_CHAR()来增强和处理特定表中的DATE值。
  • 我们使用CURRENT_DATE关键字来检索表中特定列的当前日期。