SQL Server 日期时间科普
前言
在SQL Server数据库中,日期和时间是常见的数据类型。在许多应用程序中,我们需要存储和处理日期和时间数据,例如记录操作时间、制定排班计划等。本文将介绍SQL Server中的日期时间类型以及相关操作,以帮助你更好地处理日期时间数据。
SQL Server日期时间类型
SQL Server提供了多种日期时间类型,每种类型都有不同的精度和范围。以下是SQL Server中常用的日期时间类型:
-
DATE:存储日期,精确到天。范围从0001年1月1日到9999年12月31日。
CREATE TABLE Example ( date_value DATE );
-
TIME:存储时间,精确到毫秒。范围从00:00:00.0000000到23:59:59.9999999。
CREATE TABLE Example ( time_value TIME );
-
DATETIME:存储日期和时间,精确到毫秒。范围从1753年1月1日到9999年12月31日。
CREATE TABLE Example ( datetime_value DATETIME );
-
SMALLDATETIME:存储日期和时间,精确到分钟。范围从1900年1月1日到2079年6月6日。
CREATE TABLE Example ( smalldatetime_value SMALLDATETIME );
-
DATETIME2:存储日期和时间,精确到100纳秒。范围从0001年1月1日到9999年12月31日。
CREATE TABLE Example ( datetime2_value DATETIME2(7) );
-
DATETIMEOFFSET:存储日期和时间,精确到100纳秒,并包含时区偏移量。
CREATE TABLE Example ( datetimeoffset_value DATETIMEOFFSET(3) );
使用日期时间函数
SQL Server提供了许多日期时间函数,用于对日期时间数据进行计算和处理。
获取当前日期时间
使用GETDATE()
函数可以获取当前日期和时间:
SELECT GETDATE() AS current_datetime;
输出结果类似如下:
current_datetime |
---|
2022-01-01 12:34:56.789 |
格式化日期时间
使用CONVERT()
函数可以将日期时间类型转换为特定格式的字符串:
SELECT CONVERT(VARCHAR(20), GETDATE(), 120) AS formatted_datetime;
输出结果类似如下:
formatted_datetime |
---|
2022-01-01 12:34:56 |
上述代码中,120
代表日期时间的格式,具体格式可以参考[官方文档](
比较日期时间
使用DATEDIFF()
函数可以计算两个日期之间的差值:
SELECT DATEDIFF(HOUR, '2022-01-01 10:00:00', '2022-01-01 12:00:00') AS hour_diff;
输出结果为:
hour_diff |
---|
2 |
上述代码中,HOUR
代表计算的单位,可以是YEAR
、MONTH
、DAY
、HOUR
等。
操作日期时间
使用DATEADD()
函数可以在日期时间上进行加减运算:
SELECT DATEADD(DAY, 7, '2022-01-01') AS new_date;
输出结果为:
new_date |
---|
2022-01-08 |
上述代码中,DAY
代表要增加或减少的单位,7
代表增加或减少的数量。
类图
下面是SQL Server日期时间类型的类图:
classDiagram
class DATE {
+ date_value: DATE
}
class TIME {
+ time_value: TIME
}
class DATETIME {
+ datetime_value: DATETIME
}
class SMALLDATETIME {
+ smalldatetime_value: SMALLDATETIME
}
class DATETIME2 {
+ datetime2_value: DATETIME2
}