了解MSSQL中的时间数据类型
在开始获取当前时间之前,我们需要了解一下MSSQL中的时间数据类型,其中包括:
DATE
TIME
DATETIME
DATETIME2
SMALLDATETIME
OFFSET
1. DATE
DATE类型表示一个日期,不包括时间。它使用YYYY-MM-DD的格式,其中YYYY表示年份,MM表示月份,DD表示日期。
DECLARE @myDate DATE = '2021-08-18'
SELECT @myDate
以上代码将声明一个DATE类型变量@myDate,并且将它的值设为2021年8月18日。然后使用SELECT语句打印出@myDate的值。
2. TIME
TIME类型表示一天中的某个时间,不包括日期。它使用HH:MM:SS.SSSSSSS的格式,其中HH表示小时,MM表示分钟,SS.SSSSSS表示秒和毫秒。
DECLARE @myTime TIME = '13:55:00.1234567'
SELECT @myTime
以上代码将声明一个TIME类型变量@myTime,并且将它的值设为下午1点55分,0.1234567秒。然后使用SELECT语句打印出@myTime的值。
3. DATETIME
DATETIME类型表示一个日期和时间。它使用YYYY-MM-DD HH:MM:SS.SSS的格式。
DECLARE @myDateTime DATETIME = '2021-08-18 13:55:00.123'
SELECT @myDateTime
以上代码将声明一个DATETIME类型变量@myDateTime,并且将它的值设为2021年8月18日下午1点55分0.123秒。然后使用SELECT语句打印出@myDateTime的值。
4. DATETIME2
DATETIME2类型与DATETIME类型类似,但是它的精度更高。它使用YYYY-MM-DD HH:MM:SS.SSSSSSS的格式。
DECLARE @myDateTime2 DATETIME2 = '2021-08-18 13:55:00.1234567'
SELECT @myDateTime2
以上代码将声明一个DATETIME2类型变量@myDateTime2,并且将它的值设为2021年8月18日下午1点55分0.1234567秒。然后使用SELECT语句打印出@myDateTime2的值。
5. SMALLDATETIME
SMALLDATETIME类型与DATETIME类型类似,但是它的精度更低。它使用YYYY-MM-DD HH:MM:SS的格式,其中年份只有两位数。
DECLARE @mySmallDateTime SMALLDATETIME = '21-08-18 13:55:00'
SELECT @mySmallDateTime
以上代码将声明一个SMALLDATETIME类型变量@mySmallDateTime,并且将它的值设为2021年8月18日下午1点55分0秒。然后使用SELECT语句打印出@mySmallDateTime的值。
6. OFFSET
OFFSET类型表示一个时区的偏移量。它使用+HH:MM或-HH:MM的格式。
DECLARE @myOffset OFFSET = '-07:00'
SELECT @myOffset
以上代码将声明一个OFFSET类型变量@myOffset,并且将它的值设为-7小时。然后使用SELECT语句打印出@myOffset的值。
使用GETDATE()获取当前时间
MSSQL中有一个内置函数GETDATE(),可以用来获取当前日期和时间。
SELECT GETDATE()
以上代码将执行SELECT语句,打印出当前的日期和时间。
使用SYSDATETIME()获取精确的当前时间
虽然GETDATE()函数可以很方便地获取当前时间,但是它只能精确到秒。如果需要更高的精度,可以使用SYSDATETIME()函数。
SELECT SYSDATETIME()
以上代码将执行SELECT语句,打印出当前的日期和时间,并且精确到毫秒。
使用DATEPART()函数获取时间的单个部分
DATEPART()函数可以用来获取时间的单个部分,例如年、月、日、小时、分钟和秒。
以下是一个例子,获取当前时间的小时部分:
SELECT DATEPART(hour, GETDATE())
以上代码将执行SELECT语句,打印出当前时间的小时数。
获取UTC时间
如果需要获取协调世界时(UTC),可以使用GETUTCDATE()函数。
SELECT GETUTCDATE()
以上代码将执行SELECT语句,打印出当前的UTC时间。
在WHERE语句中使用时间函数
除了在SELECT语句中使用时间函数外,时间函数还可以用在WHERE语句中。例如,可以使用YEAR()函数过滤出某个年份的所有记录。
SELECT *
FROM myTable
WHERE YEAR(createTime) = 2021
以上代码将查询myTable表中所有创建时间为2021年的记录。
总结
MSSQL中有多种时间数据类型,包括DATE、TIME、DATETIME、DATETIME2、SMALLDATETIME和OFFSET。可以使用GETDATE()函数获取当前时间,使用SYSDATETIME()函数获取更高精度的当前时间。还可以使用DATEPART()函数获取时间的单个部分,使用GETUTCDATE()函数获取UTC时间。时间函数可以在SELECT语句和WHERE语句中使用,以过滤和操作时间数据。