为什么我们应该使用GETUTCDATE()函数而不是getdate()或反之?

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

最佳答案

GETUTCDATE()表示当前的UTC时间(通用时间坐标或格林威治标准时间)

  • 这是nondeterministic函数,引用此列的 View 和表达式无法建立索引。

  • 当前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 Server,则显示的时间戳将是远程计算机而不是本地计算机的时间戳。
  • 这是一个不确定函数。
  • 引用此列的 View 和表达式无法建立索引。

  • GETUTCDATE()
  • 将返回日期和GMT时间(格林威治标准时间)。
  • GETUTCDATE()可用于存储独立于时区的时间戳。
  • 当前UTC时间是从当前本地时间和运行Microsoft SQL Server实例的计算机的操作系统中的时区设置得出的。
  • GETUTCDATE是不确定函数。
  • 引用此列的 View 和表达式无法建立索引。
  • 关于sql - GETUTCDATE函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14996306/

    10-09 20:12