SQL - 日期和时间


SQL 提供多种数据类型和函数来处理数据库中的日期和时间值。这是因为日期和时间值以各种格式表示。例如,有两种常见的方式来表示日期值:DD/MM/YYYYMM/DD/YYYY。同样,表示时间值的方法也不止一种。

为了使数据库能够识别以任何格式给出的此类数据,我们使用多种数据类型和函数。

将日期和时间数据存储在数据库中的唯一棘手的部分是确保将值插入到具有与数据类型相同格式的表中。

不同的数据库系统使用不同的数据类型和函数来存储和处理日期和时间数据。

SQL 中的日期和时间数据类型

SQL 中使用日期和时间数据类型以各种格式存储日期和时间值。下面列出了 SQL 中可用的数据类型。

编号 数据类型和描述 贮存
1

约会时间

它存储从1753年1月1日到9999年12月31日的日期和时间,精度为3.33毫秒;格式为:YYYY-MM-DD HH:MI:SS。

8字节
2

日期时间2

它存储从 0001 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间,精度为 100 纳秒。

6 - 8 字节
3

小日期时间

它存储从1900年1月1日到2079年6月6日的日期和时间,精度为1分钟。存储格式为YYYY-MM-DD HH:MI:SS。

4字节
4

日期

它仅存储从 0001 年 1 月 1 日到 9999 年 12 月 31 日的日期,格式为:YYYY-MM-DD。

3字节
5

时间

它存储时间的精度仅为 100 纳秒。

3 - 5 字节
6

日期时间偏移量

它与 datetime2 相同,只是添加了时区偏移量。

8 - 10 字节
7

时间戳

它存储每次创建或修改行时都会更新的唯一编号。它不对应于实时时间,而是基于内部时间。每个表可能只有一个时间戳变量。

例子

在以下示例中,让我们创建一个名为 SALES_DETAILS 的表,该表仅接受不同格式的日期和时间值。

CREATE TABLE SALES_DETAILS(
   orderDate DATE, 
   shippingDate DATETIME, 
   deliveredDate TIMESTAMP, 
   time TIME
);

要将值插入到该表中,请使用以下查询 -

INSERT INTO SALES_DETAILS VALUES
('2023-02-01', '2023-02-01 :10:00','2023-02-03 :18:00', '18:00');

输出

该表将创建如下 -

订购日期 发货日期 交付日期 时间
2023-02-01 2023-02-01 :10:00 2023-02-03 :18:00 18:00

SQL 中的日期和时间函数

SQL 还提供了多个函数来处理日期和时间值。

例如,有不同的函数可以以不同的格式检索当前时间戳。让我们看看下面的一些这样的函数 -

CURDATE() 函数

为了获取当前日期,我们使用 MySQL 中的 CURDATE() 函数。结果日期的格式将为“YYYY-MM-DD”(字符串)或 YYYYMMMDD(数字)。

SELECT CURDATE();

输出

当我们执行上面的查询时,我们得到当前日期 -

库达特()
2023-08-22

NOW() 函数

MySQL NOW() 函数将根据上下文检索当前日期和时间值作为时间戳,返回的值将采用以下两种格式之一:“YYYY-MM-DD hh:mm:ss”和“YYYYMMDDhhmmss” '。

SELECT NOW();

输出

当我们执行上面的 SQL 查询时,我们得到当前日期和时间,如下所示:

现在()
2023-08-22 15:30:25

CURRENT_TIMESTAMP() 函数

MySQL CURRENT_TIMESTAMP() 函数用于获取当前时间戳。返回的值将采用“YYYY-MM-DD hh:mm:ss”(字符串)或 YYYYMMDDhhmmss(数字)格式。该函数是 NOW() 的同义词。

SELECT CURRENT_TIMESTAMP();

输出

当我们运行上面的 SQL 查询时,我们得到以下输出 -

CURRENT_TIMESTAMP()
2023-08-22 15:31:32