使用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()
返回正确的时间戳。
答案 0 :(得分:3)
您正在插入''(空字符串)作为LastCheckIn值,因此默认值未被使用。试试这个;
INSERT INTO DBO.STATUS (ProcessNam) VALUES ('TEST')
由于DateTimes的解析方式,''相当于0(零),并且由于DateTimes的存储方式,0等于1900-01-01 00:00:00.000000。