我的“数据默认(getdate())”,它不起作用

时间:2015-05-16 14:29:30

标签: c# sql-server asp.net-mvc date aspnetdb

我正在尝试在我的SQL Server表中插入当前日期。

我的表包含3个文件:

CREATE TABLE [dbo].[MyTable] 
(
     [Id]   INT IDENTITY (1, 1) NOT NULL,
     [Name] NVARCHAR (50) NOT NULL,
     [Date] DATE 
         CONSTRAINT [DF_MyTable_Date] DEFAULT (getdate()) NOT NULL,

     CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED ([Id] ASC)
) 

当新用户想要在系统中注册时,他只需要插入他的名字。

在我的表格中,ID会自动生成,也会生成日期,但日期会显示01/01/0001而不是当天。

错误在哪里?

3 个答案:

答案 0 :(得分:0)

如果您在C#中创建日期时间变量,如

var today_date = new DateTime();

并执行Console.WriteLine(today_date);你可以看到它打印0001-01-01

所以这是默认值null ..

使用DBNull.ValueSQL NULL插入C#并检查结果

答案 1 :(得分:0)

enter image description here

(Your_Date_Column)将其设置为Null / Not Null,并提供默认值GetDate(),但仍然无法使用。您必须创建一个这样的触发器,

创建触发[dbo]。[触发日期]开启[dbo]。[表名]开始插入

if noun2[:1]=='a' or noun2[:1]=='e' or noun2[:1]=='i' or noun2[:1]=='o' or noun2[:1]=='u':

END

答案 2 :(得分:0)

不需要函数和触发器。只需将类型为 DateDateTime 的列设置为 NOT NULL DEFAULT CURRENT_TIMESTAMP

更新了问题中的示例代码:

CREATE TABLE [dbo].[MyTable] 
(
     [Id]   INT IDENTITY (1, 1) NOT NULL,
     [Name] NVARCHAR (50) NOT NULL,
     [Date] DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

     CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED ([Id] ASC)
)