SQL - 日期和时间



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

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

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

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

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

日期和时间数据类型用于 SQL 中,以各种格式存储日期和时间值。SQL 中可用的数据类型如下所示。

序号 数据类型和描述 存储
1

datetime

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

8 字节
2

datetime2

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

6 - 8 字节
3

smalldatetime

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

4 字节
4

date

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

3 字节
5

time

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

3 - 5 字节
6

datetimeoffset

它与 datetime2 相同,并增加了时区偏移量。

8 - 10 字节
7

timestamp

它存储每次创建或修改行时更新的唯一编号。它与实际时间无关,并且基于内部时间。每个表只能有一个 timestamp 变量。

示例

在以下示例中,让我们创建一个名为 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');

输出

该表将创建如下所示 -

orderDate shippingDate deliveredDate time
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();

输出

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

CURDATE()
2023-08-22

NOW() 函数

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

SELECT NOW();

输出

当我们执行上述 SQL 查询时,我们得到当前日期和时间如下 -

NOW()
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
广告