📅  最后修改于: 2020-11-30 07:39:21             🧑  作者: Mango
在本节中,我们将了解PostgreSQL的日期数据类型的工作,日期数据类型,以及一些访问日期的功能,我们能够更有效地处理日期值,帮助的例子。
PostgreSQL中的另一种数据类型是DATE ,用于存储日期值。
在PostgreSQL中, Date数据类型格式为YYYY-MM-DD ,这有助于我们存储日期记录并将其插入date列。
Date数据类型涉及4个字节的存储大小。并且日期数据类型的最小和最大范围从4713 BC到5874897 AD或1000-01-01到9999-12-31开始。
如果要在创建包含Date列的新表时使用当前日期作为列的默认值,可以在DEFAULT关键字后使用CURRENT_DATE。
PostgreSQL Date数据类型的语法如下:
variable_name DATE
让我们看一个示例示例,以了解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中具有以下日期函数,例如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;
输出量
执行上述命令后,我们将获得以下输出:
我们可以使用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日期”数据类型部分中,我们学习了以下主题: