2016-04-26 72 views
0

我有一個名爲From_dateto_date的列。這些列分別具有默認約束,分別爲getdate()9999-12-31垃圾值出現在列中而不是默認值

但是,在將數據加載到表格後,我感到奇怪。

相反,我同時在列1753-01-01 00:00:00.0000000

獲得價值缺省值的有沒有人碰到這個情況來的?如何解決這個問題?

下面是一些表的DDL

ALTER TABLE [dbo].[mytable] 
ADD CONSTRAINT [df_FMDT_IX] 
DEFAULT (getdate()) FOR [from_date] 
GO 

ALTER TABLE [dbo].[mytable] 
ADD CONSTRAINT [df_TODT_IX] 
DEFAULT ('9999-12-31') FOR [to_date] 
GO 

數據類型將列DATETIME2

+0

也許編寫你的表DDL腳本並在這裏發佈它,包括默認約束。列的數據類型是什麼?如果您使用'CONVERT(DATETIME,'9999-12-31',120)'而不是? –

+0

你如何插入你的行?該日期值可能是您使用的框架/語言的一些默認值 –

+0

@ Nick.McDermaid:列的數據類型爲datetime2。 ALTER TABLE [dbo]。[mytable] ADD CONSTRAINT [df_FMDT_IX] DEFAULT(getdate())FOR [from_date] GO ALTER TABLE [dbo]。[mytable] ADD CONSTRAINT [df_TODT_IX] DEFAULT('9999-12-31 ')FOR [to_date] GO 謝謝 –

回答

2

該日期你看到的是SQL的最小日期值。

What is the significance of 1/1/1753 in SQL Server?

我假設有人在該列中,將顯示爲最小可能值進入了一個零。

+0

我正在使用導入 - 導出嚮導將數據從flatfile加載到sql表中。平面文件中的列都是空白的,所以默認值應該在那裏,而不是默認值列中出現的一些垃圾值。 –

+0

當你說空白,是一個零長度的字符串?它與NULL值不同。 –

+0

是,即零長度字符串 –