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

问题描述 投票:0回答:3

我正在尝试在 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
而不是当前日期。

错在哪里?

c# sql-server asp.net-mvc date aspnetdb
3个回答
0
投票

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

var

today_date = new DateTime();

并执行

Console.WriteLine(today_date);
你可以看到它打印出来
0001-01-01

所以这是默认值 null..

使用

DBNull.Value
SQL NULL
插入
C#
并检查结果


0
投票

不需要函数和触发器。只需将类型为

Date
DateTime
的列设置为
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)
)

0
投票

enter image description here

(Your_Date_Column) 将其设为空/非空并给出默认值 GetDate() 但仍然不起作用。你必须创建一个像这样的触发器,

CREATE TRIGGER [dbo].[Trigger_Date] ON [dbo].[TableName] FOR INSERT AS BEGIN

    Declare @Id int
    set @Id = (select Id from inserted)

    Update [dbo].[TableName]
    Set Your_Date_Column = GetDate()
    Where Id = @Id
END
© www.soinside.com 2019 - 2024. All rights reserved.