SQL Server GetUTCDate默认无效

时间:2015-03-16 16:31:22

标签: sql-server database tsql datetime

使用Microsoft SQL Server我希望列默认具有当前的UTC日期和时间。插入行并且没有为该列指定值时,它应默认为服务器上的UTC日期。

我用:

创建表格
CREATE TABLE [dbo].[Status]
(
    [ProcessNam] [varchar](30) NOT NULL,
    [LastCheckIn] [datetime2] NOT NULL DEFAULT GETUTCDATE(),
    [Failures] [tinyint] NOT NULL DEFAULT ((0)),

    CONSTRAINT [PK_AST_PING] 
      PRIMARY KEY CLUSTERED ([ProcessNam] ASC)
          WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

但是当我使用时:

INSERT INTO dbo.Status VALUES ('TEST', '', '')

该列最终包含1900-01-01 00:00:00.000000

如果我使用

SELECT GETUTCDATE()

返回正确的时间戳。

1 个答案:

答案 0 :(得分:3)

您正在插入''(空字符串)作为LastCheckIn值,因此默认值未被使用。试试这个;

INSERT INTO DBO.STATUS (ProcessNam) VALUES ('TEST')

由于DateTimes的解析方式,''相当于0(零),并且由于DateTimes的存储方式,0等于1900-01-01 00:00:00.000000。