为什么我们应该使用GETUTCDATE()
函数而不是getdate()
反之亦然?
两者的目的是什么?请帮我举个例子。
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
获取日期 ()
获取UTC日期()
getdate() 将返回本地系统上的日期。假设您正在提取一些数据,并且数据库服务器位于 UTC 位置。您的日期时间列将返回 UTC 时间戳,您将无法匹配时间戳。
因此,您可以通过在 UTC 日期和 getdate 上使用 datediff 函数来调整日期时间。