我们为什么要使用GETUTCDATE()
函数代替getdate()
或反之?
两者的目的是什么?请帮我举例。
答案 0 :(得分:51)
GETUTCDATE()表示当前UTC
时间(通用时间坐标或格林威治标准时间)
nondeterministic
函数,无法对引用此列的视图和表达式建立索引。当前UTC时间源自运行SQL Server的计算机的操作系统中的当前本地时间和时区设置。
GETDATE()
和GETUTCDATE()
之间的差异是时间 SQL Server计算机的区域号 。
为了更好地理解,请参阅示例:
DECLARE @local_time DATETIME;
DECLARE @gmt_time DATETIME;
SET @local_time = GETDATE();
SET @gmt_time = GETUTCDATE();
SELECT 'Server local time: '
+ CONVERT(VARCHAR(40),@local_time);
SELECT 'Server GMT time: '
+ CONVERT(VARCHAR(40),@gmt_time);
SELECT 'Server time zone: '
+ CONVERT(VARCHAR(40),
DATEDIFF(hour,@gmt_time,@local_time));
GO
输出:
Server local time: Jun 2 2007 10:06PM
Server GMT time: Jun 2 2007 4:21PM
Server time zone: 6
GETDATE()
GETUTCDATE()
答案 1 :(得分:0)
getdate()将返回本地系统上的日期。假设您正在提取一些数据,并且数据库服务器位于UTC位置。您的日期时间列将返回UTC时间戳,您将无法匹配时间戳。
因此,您可以在UTC日期和getdate上使用datediff函数调整日期时间。