📜  PostgreSQL日期

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

PostgreSQL日期

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

什么是PostgreSQL日期数据类型?

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

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

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

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

PostgreSQL Date数据类型的语法

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

variable_name DATE

PostgreSQL日期数据类型的示例

让我们看一个示例示例,以了解PostgreSQL Date数据类型如何工作。

我们将在CREATE命令的帮助下创建一个新表作为Records ,并使用INSERT命令插入一些值。

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

Records表包含各种列,例如Records_id,Heading和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表已成功创建。

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

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

输出量

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

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

SELECT * 
FROM Records;

输出量

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


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

PostgreSQL日期函数示例

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

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

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

我们将使用CREATE命令将Student_details创建到Organization数据库中。

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表已成功创建到组织数据库中。

生成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表中。

创建并插入Student_details表后,我们将看到以下Date数据类型函数:

评估年,月和日的年龄

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

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

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

输出量

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

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

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

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

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

输出量

成功执行以上命令后,我们将获得以下输出,该输出显示指定日期值上所有学生的年龄。

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

我们可以使用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;

输出量

实施上述命令后,我们将获得以下结果,该命令分别显示年,月和日值。

获取当前日期

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

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

SELECT NOW()::date;

输出量

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

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

SELECT CURRENT_DATE;

输出量

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


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

获取两个日期之间的间隔

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

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

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

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

输出量

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

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

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

一个参数是我们要设置格式的值,另一个是指定输出格式的模板

在以下示例中,我们将通过以下命令显示当前日期,格式为:YYYY / MM / DD。

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

输出量

成功执行上述命令后,我们将获得类似的日期格式,我们在上面的语句中提到了这种格式:

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

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

输出量

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

总览

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

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