Sql 简明教程

SQL - Date & Time

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

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

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

Date & Time Datatypes in SQL

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

S.No.

Datatype & Description

Storage

1

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

8 bytes

2

datetime2 它以 100 纳秒的精度存储 0001 年 1 月 1 日到 9999 年 12 月 31 日之间的日期和时间。

6 - 8 bytes

3

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

4 bytes

4

date 它在 YYYY-MM-DD 的格式中只存储从 0001 年 1 月 1 日到 9999 年 12 月 31 日之间的日期。

3 bytes

5

time 它只以 100 纳秒的精度存储时间。

3 - 5 bytes

6

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

8 - 10 bytes

7

timestamp它存储一个唯一数字,每当创建或修改一行时,该数字都会更新。它不对应于真实时间,而基于内部时间。每个表只能有一个时间戳变量。

Example

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

Output

该表将按如下方式创建:

orderDate

shippingDate

deliveredDate

time

2023-02-01

2023-02-01 :10:00

2023-02-03 :18:00

18:00

Date & Time Functions in SQL

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

例如,有不同的函数以不同的格式检索当前时间戳。让我们在下面看看其中的一些函数−

CURDATE() Function

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

SELECT CURDATE();

Output

当执行以上查询时,我们获取当前日期−

CURDATE()

2023-08-22

NOW() Function

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

SELECT NOW();

Output

当执行以上的SQL查询时,我们获取带时间的当前日期,如下所示−

NOW()

2023-08-22 15:30:25

CURRENT_TIMESTAMP() Function

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

SELECT CURRENT_TIMESTAMP();

Output

当运行以上的SQL查询时,我们获取以下输出−

CURRENT_TIMESTAMP()

2023-08-22 15:31:32