介绍
Microsoft SQL Server(MSSQL)是一种关系型数据库管理系统(RDBMS)。
时间信息在MSSQL中相当常见,例如存储时间、日期、时间戳、时间差值等等。
日期和时间数据类型
在MSSQL中,日期和时间数据类型包括:
DATETIME(YYYY-MM-DD HH:MI:SS)
DATE(YYYY-MM-DD)
TIME(HH:MI:SS)
DATETIME2(YYYY-MM-DD HH:MI:SS.nnnnnnn)
SMALLDATETIME(YYYY-MM-DD HH:MIAM/PM)
DATETIMEOFFSET(YYYY-MM-DD HH:MI:SS.nnnnnnn [+|-]HH:MM)
其中DATETIME和SMALLDATETIME存储到分钟级别,而DATETIME2和DATETIMEOFFSET则可以存储到纳秒级别。
获取当前日期和时间
使用系统函数GETDATE()
可以使用系统函数GETDATE()获取当前日期和时间,返回值为DATETIME类型。
SELECT GETDATE();
重要提示:GETDATE()返回值受当前系统时间的影响,所以在不同的系统上返回的日期和时间可能不同。
使用函数SYSDATETIME()
可以使用函数SYSDATETIME()获取当前日期和时间,返回值为DATETIME2类型。
SELECT SYSDATETIME();
重要提示:SYSDATETIME()返回值不受当前系统时间的影响,所以在不同的系统上返回的日期和时间是相同的。
日期和时间的格式化
使用函数CONVERT()
可以使用函数CONVERT()将日期和时间格式化为指定的字符串格式。
例如,以下查询将DATETIME类型的数据格式化为YYYY-MM-DD格式:
SELECT CONVERT(VARCHAR(10), GETDATE(), 120);
其中,VARCHAR(10)指定返回值类型为VARCHAR,长度为10。参数120表示返回格式为YYYY-MM-DD。
使用函数FORMAT()
可以使用函数FORMAT()将日期和时间格式化为指定的字符串格式。函数FORMAT()只在SQL Server 2012及以上版本中可用。
例如,以下查询将DATETIME类型的数据格式化为YYYY-MM-DD格式:
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd');
日期和时间的计算
使用日期和时间相关函数
可以使用日期和时间相关函数对日期和时间进行加减运算。
以下是一些常用函数:
DATEADD() - 将指定的时间间隔加到日期或时间上
DATEDIFF() - 计算两个日期或时间之间的差
DATEPART() - 返回日期或时间的指定部分,例如月份或小时
例如,以下查询将当前日期减去10天:
SELECT DATEADD(DAY, -10, GETDATE());
其中,第一个参数DAY指定时间间隔为天,-10表示减去10天。
以下查询计算两个日期之间相差的天数:
SELECT DATEDIFF(DAY, '2022-01-01', GETDATE());
其中,第一个参数DAY指定计算单位为天,第二个参数为指定日期。
结论
MSSQL中处理时间信息十分方便,可以通过日期和时间数据类型、获取当前日期和时间、格式化日期和时间、计算日期和时间等多种方式进行操作。