1. MSSQL中日期类型介绍
MSSQL中日期类型分为两类,分别是datetime和smalldatetime。其中datetime类型存储的日期时间范围为1753年1月1日00:00:00.000到9999年12月31日23:59:59.997,精度为毫秒。而smalldatetime类型存储的日期时间范围为1900年1月1日00:00:00.000到2079年6月6日23:59:00.000,精度为分钟。
2. 获取当前时间
2.1 获取系统当前日期
使用GETDATE()函数可以获取当前系统日期,其返回值类型为datetime。
SELECT GETDATE()
注意,GETDATE()函数返回的日期时间为当前系统时间,不受数据库所在时区的影响。
2.2 获取系统当前时间
使用GETDATE()函数结合CONVERT()函数,可以获取系统当前时间。
SELECT CONVERT(TIME, GETDATE()) AS currentTime
这里需要注意,SQL Server中的TIME类型只在MSSQL 2008及以上版本中有支持。
3. 日期格式化
3.1 格式化日期
使用CONVERT()函数可以将datetime类型转换成指定格式的字符格式。其中,转换格式的字符串可以自行定义。
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS date
这里需要注意,CONVERT()函数的第三个参数表示转换格式。其中,120表示yyyy-mm-dd hh:mi:ss格式的日期字符串。
3.2 格式化时间
使用CONVERT()函数和TIME类型可以将时间格式化成指定格式的字符串。
SELECT CONVERT(VARCHAR(8), CONVERT(TIME, GETDATE()), 108) AS time
这里需要注意,CONVERT()函数的第一个参数表示要转换成字符类型的长度。而第二个参数表示要转换的时间类型,这里的TIME类型必须使用CONVERT()函数进行转换。
4. 日期计算
4.1 日期加减
可以使用DATEADD()函数来进行日期时间加减操作。
SELECT DATEADD(DAY, -1, GETDATE()) AS 'yesterday' -- 减一天
SELECT DATEADD(DAY, 7, GETDATE()) AS 'nextweek' -- 加一周
SELECT DATEADD(MONTH, 2, GETDATE()) AS 'nextMonth' -- 加两个月
需要注意的是,DATEADD()函数是针对datetime类型进行计算,计算结果也是datetime类型。
4.2 日期差计算
使用DATEDIFF()函数可以计算两个日期之间的差值。
SELECT DATEDIFF(DAY, '2022-10-01', '2022-10-07') AS 'daysDiff'
SELECT DATEDIFF(MINUTE, '2022-10-07 10:20:00', '2022-10-07 11:30:00') AS 'minutesDiff'
需要注意的是,DATEDIFF()函数的第一个参数表示要计算的时间单位,第二个参数和第三个参数表示要计算的两个日期或时间。
5. DATETIME类型转换
5.1 将字符串转换为datetime类型
可以使用CAST()函数或CONVERT()函数将字符串类型的日期转换成datetime类型。
SELECT CAST('2022-10-07 12:00:00' AS DATETIME) AS 'datetime'
SELECT CONVERT(DATETIME, '2022/10/07', 101) AS 'datetime'
需要注意的是,第一个例子中使用的是CAST()函数进行类型转换,而第二个例子使用的是CONVERT()函数。不同的转换方式对应的日期格式也不一样。
5.2 将datetime类型转换为字符串
可以使用CAST()函数或CONVERT()函数将datetime类型转换成字符串类型的日期。
SELECT CAST(GETDATE() AS VARCHAR(19)) AS 'datetimeText'
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS 'dateText'
需要注意的是,第一个例子中使用的是CAST()函数进行类型转换,而第二个例子使用的是CONVERT()函数。不同的转换方式对应的日期格式也不一样。
6. 总结
本文介绍了MSSQL中常用的日期函数,包括获取当前日期和时间、日期格式化、日期计算、datetime类型转换等。通过本文的介绍,读者可以深入了解MSSQL中日期类型的相关知识,并且掌握相关的日期处理技巧。