首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlDateTime溢出

SqlDateTime溢出
EN

Stack Overflow用户
提问于 2014-10-30 10:26:08
回答 1查看 122关注 0票数 2

在SQL server 2005中,我有一个表定义如下:

代码语言:javascript
复制
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DebugTrace](
    [Timestamp] [datetime] NOT NULL CONSTRAINT [DF_DebugTrace_Timestamp]  DEFAULT (getdate()),
    [Log] [nvarchar](max) NOT NULL,
    [id] [int] IDENTITY(1,1) NOT NULL,
 CONSTRAINT [PK_DebugTrace] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

如您所见,时间戳列的默认值设置为GetDate()。

从(在SQL服务器上本地运行),以下代码运行良好:

代码语言:javascript
复制
insert into DebugTrace ([Log])
values ('test')

运行我的工作站的“相同”代码失败:

代码语言:javascript
复制
DebugTrace trace = new DebugTrace();
trace.Log = "test from code";
DebugTraces.InsertOnSubmit(trace);
SubmitChanges();

引发的例外情况是:

SqlDateTime溢出必须在1/1/1753 12:00上午12:00至12/31/9999 11:59:59下午

这两个请求都不设置时间戳,而是依赖默认值来设置列值。因此,GetDate()函数如何触发这样的异常?

请求从不同的机器上运行,但具有相同的Windows帐户

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-30 10:36:20

DebugTrace的属性映射到TimeStamp,是否有默认值?尝试在从代码中插入时给它一个默认值。

代码语言:javascript
复制
DebugTrace trace = new DebugTrace();
trace.Log = "test from code";
trace.TimeStamp= Datetime.Now; 

您的问题是,当插入时,时间戳仍然是空的。因此,它可能是您的默认值约束不能正常工作。看看这个link,它精确地阐述了您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26650529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档