MSSQL怎么查现在几点小时,举个简单例子教你快速搞定查询当前小时
- 问答
- 2026-01-01 22:31:48
- 4
要查MSSQL服务器现在的几点小时,最核心的就是用对函数,你不用想得太复杂,就跟你看手表一样,SQL Server也有自己的“手表”,我们只是去读取它的小时刻度,最直接、最常用的方法就是使用GETDATE()函数配合DATEPART()函数。
GETDATE()这个函数是SQL Server里最基础的获取当前系统日期和时间的函数,你只要在查询里写上SELECT GETDATE(),一运行,它就会返回一个包含年月日、时分秒毫秒的完整时间值,比如它可能返回“2023-10-27 15:30:45.123”,这个函数的信息来源于微软官方文档,在T-SQL参考部分有详细说明,它返回的是数据库服务器所在操作系统的当前日期和时间。
我们通常不想要这么详细的信息,我们只关心“小时”这个部分,也就是上面例子里的“15”(代表下午3点),这时候就需要DATEPART()函数来帮忙了,DATEPART()函数就像一个精密的时间零件提取器,它可以从一个日期时间值里,提取出你指定的部分,比如年、月、日、小时、分钟等等。
把这两个函数结合起来,就能完美解决我们的问题,具体的写法是这样的:
SELECT DATEPART(hour, GETDATE()) AS CurrentHour;

我们来拆解一下这句简单的代码:
GETDATE():这部分是内层函数,先执行,它负责获取当前完整的日期时间。DATEPART(hour, ...):这是外层函数,它有两个参数:- 第一个参数是
hour,这是个关键字,明确告诉SQL Server:“我要提取的是小时部分”,在微软官方文档中,DATEPART函数部分的参数列表里明确列出了hour作为提取时间部分的合法参数。 - 第二个参数就是我们刚刚获取的完整时间,也就是
GETDATE()。
- 第一个参数是
AS CurrentHour:这部分是给查询出来的结果列起一个别名,如果不写,列名会显示为“(无列名)”,写上AS CurrentHour后,结果集的列名就会是“CurrentHour”,这样看起来更清晰。
你可以在SQL Server Management Studio (SSMS) 或者其他任何能连接MSSQL并执行查询的工具里,直接输入这行代码,然后执行,结果就会显示一个数字,就是当前的小时数,使用的是24小时制,比如下午3点,就会显示15。
除了这种最标准的方法,还有一些其他的写法也能达到类似的效果,但可能稍有不同。
一种方法是使用DATENAME()函数,它的用法和DATEPART()非常像,也是提取日期的一部分,区别在于,DATEPART()返回的是一个整数(比如15),而DATENAME()返回的是一个字符串(15’),在只需要小时数字的情况下,两者可以互换,但DATEPART()在逻辑上更精确,因为小时本身就是一个数字概念,写法是:SELECT DATENAME(hour, GETDATE()) AS CurrentHourString;

另一种方法是先使用GETDATE()获取时间,然后通过转换数据类型的方式间接提取,你可以先把GETDATE()转换成只包含时间部分的数据类型,然后再从中截取小时,但这种方法比较绕远,不如DATEPART()直接,容易出错,一般不推荐初学者使用。
这里要特别注意一个可能让你困惑的点:时区,GETDATE()返回的是SQL Server所在服务器的本地时间,如果你的服务器设置在东八区(北京时间),那它返回的就是北京时间,如果你的服务器在美国,那返回的就是美国时间,这意味着,如果你在中国,但连接的数据库服务器在美国,你查出来的“当前小时”可能就是美国的白天,中国的深夜,这一点非常重要,尤其是在为跨时区的应用程序做开发时,根据微软官方文档对系统函数的说明,GETDATE()的确反映的是操作系统设置的时区。
如果你想获取的是标准时间(比如UTC时间),SQL Server提供了GETUTCDATE()函数,你可以用同样的方法提取小时:SELECT DATEPART(hour, GETUTCDATE()) AS CurrentHourUTC,这样得到的就是格林威治标准时间的小时数。
举个例子来加深理解,假设现在是北京时间2023年10月27日下午3点半,你在连接位于北京的数据库服务器上执行:

SELECT DATEPART(hour, GETDATE()) AS 北京时间小时数;
查询结果会是一个数字:15。
如果你在同一时刻执行:
SELECT DATEPART(hour, GETUTCDATE()) AS UTC时间小时数;
查询结果会是另一个数字:7(因为UTC时间比北京时间晚8小时,15-8=7)。
在选择函数时,一定要清楚你需要的到底是服务器本地时间还是UTC时间。
查询MSSQL当前小时数,最常用、最不容易出错的核心命令就是SELECT DATEPART(hour, GETDATE()),你只要记住这个简单的格式,就能快速搞定,如果需要考虑全球时间统一,就把GETDATE()换成GETUTCDATE(),在实际工作中,大部分情况下直接使用GETDATE()就足够了,希望这个简单的例子能帮你快速上手。
本文由黎家于2026-01-01发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/72712.html
