GETUTCDATE功能

时间:2013-02-21 06:56:33

标签: sql sql-server

我们为什么要使用GETUTCDATE()函数代替getdate()或反之?

两者的目的是什么?请帮我举例。

2 个答案:

答案 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()

  • 它会返回您所在地区时间的日期,或者我们可以说,它会返回当前的系统日期和时间。
  • 如果远程连接到SQL服务器,则显示的时间戳将是远程计算机的时间戳,而不是本地计算机的时间戳。
  • 这是一种不确定的功能。
  • 无法将引用此列的视图和表达式编入索引。

GETUTCDATE()

  • 它将返回日期和GMT时间(格林威治标准时间)。
  • GETUTCDATE()可用于存储独立于时区的时间戳。
  • 当前UTC时间源自运行Microsoft SQL Server实例的计算机的操作系统中的当前本地时间和时区设置。
  • GETUTCDATE是一种不确定的功能。
  • 无法将引用此列的视图和表达式编入索引。

答案 1 :(得分:0)

getdate()将返回本地系统上的日期。假设您正在提取一些数据,并且数据库服务器位于UTC位置。您的日期时间列将返回UTC时间戳,您将无法匹配时间戳。

因此,您可以在UTC日期和getdate上使用datediff函数调整日期时间。