【问题标题】:My "data default (getdate())", it doesn't work我的“数据默认值(getdate())”,它不起作用
【发布时间】:2015-07-28 09:41:26
【问题描述】:

我正在尝试在我的 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 而不是当天。

错在哪里?

【问题讨论】:

  • 您必须向其发送new DateTime()。使您的日期变量可以为空 (DateTime?) 并确保其值为空​​。
  • 如果我在 DATE 变量中输入 Null,当我点击“查看数据”时,我会得到一个 NULL 而不是当前日期。
  • 我不知道“查看数据”是什么,也不知道它是如何实现的。我在我的 sql server 中创建了你的表并发出了这个查询并成功地得到了今天的日期。问题出在您未显示的 .net 代码中。 insert into MyTable (name) values ('foobar');
  • 只有在您在插入中指定该列时才会使用您的默认值,例如如果你有INSERT INTO dbo.MyTable(Name) VALUES(N'xxxxxx'); - 如果你指定列并传入一个值(甚至NULL),那么你的默认将不会被使用
  • 问题出在你的 C# 代码,而不是你的 SQL。编辑您的问题并显示您用于插入的 C# 代码。

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


【解决方案1】:

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

var today_date = new DateTime();

然后做一个Console.WriteLine(today_date);你可以看到它打印0001-01-01

所以这是 null 的默认值..

使用DBNull.ValueC# 插入一个SQL NULL 并检查结果

【讨论】:

    【解决方案2】:

    (Your_Date_Column) 将其设为 Null / Not Null 并提供默认值 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
    

    结束

    【讨论】:

      【解决方案3】:

      函数和触发器不是必需的。只需将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)
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-08
        • 2022-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多