1. MSSQL日期时间介绍
MSSQL的日期时间有多种类型,包括:
1.1 datetime
datetime 存储从 1753 年 1 月 1 日 00:00:00 到 9999 年 12 月 31 日 23:59:59 以及介于这两个日期之间的时间值。datetime 值精度为 3.33 毫秒,存储在 8 字节中。
SELECT CONVERT(datetime,'2021-05-05 12:30:00')
使用 CONVERT 函数将字符型的时间转换为 datetime 类型。
1.2 datetime2
datetime2 存储值的范围从 0001 年 1 月 01 日 00:00:00 到 9999 年 12 月 31 日 23:59:59.9999999。datetime2 的精度可以在 100 纳秒(即:0.0000001 秒)和最高精度 7 精度(即:0.0000001 秒)。所以,它的精度比 datetime 更高,存储也更占用空间。
SELECT CONVERT(datetime2,'2021-05-05 12:30:00.1234567',7)
使用 CONVERT 函数将字符型的时间转换为 datetime2 类型,并指定精度。
1.3 date
date 存储日期,范围在 0001 年 1 月 1 日到 9999 年 12 月 31 日,它存储为 3 字节的数据(不包含时间信息)。
SELECT CONVERT(date,'2021-05-05')
使用 CONVERT 函数将字符型的日期转换为 date 类型。
2. MSSQL日期时间运算
2.1 DATEADD函数
DATEADD 函数用于将指定的时间间隔添加到日期或时间,返回新日期或时间。
SELECT DATEADD(MINUTE,30,'2021-05-05 12:00:00')
上例中,我们使用 DATEADD 函数将 30 分钟加到 '2021-05-05 12:00:00' 这个日期时间上,得到新的日期时间值 '2021-05-05 12:30:00.000'。
2.2 DATEDIFF函数
DATEDIFF 函数计算两个日期之间的时间间隔,返回值为整数。
SELECT DATEDIFF(DAY,'2021-05-01','2021-05-05')
上例中,我们使用 DATEDIFF 函数计算 '2021-05-01' 与 '2021-05-05' 之间相差的天数,得到结果为 4。
3. 本月MSSQL的新变化
2021年5月份,Microsoft 发布了 SQL Server 2019 CU10 和 SQL Server 2019 CU5,分别支持 Windows和Linux 平台。
3.1 增强 UTF-8 支持
CU10 增强了 SQL 对 UTF-8 字符集的支持,解决了使用 UTF-8 编码的时候统计字符串长度不准确的问题。
3.2 polished三个 operator
CU5 对 SQL Server 2019 中的三个 operator 进行了改进,polished三个 operator 是指:
BatchMode Window Aggregate operator
Hash Match operator
Sort operator
这些 operator 的改进使查询性能提升了 3-10%。
3.3 其他新特性
除了上述新特性外,SQL Server 2019 CU10 和 CU5 还添加了多种新特性,包括:
改善了针对 TempDB 的存储策略
对基于 Unicode 的纯文本函数的支持进行了优化
修复了由于选择性过滤选择错位导致的查询结果错误的问题
上述改进和新特性使得 SQL Server 2019 更加强大、更加稳定,同时也使得开发者在进行数据存储和查询的时候更加灵活、方便。