使用当前日期作为列的默认值

dca*_*iro 68 sql sql-server

有没有办法DateTime.Now在Sql Server中设置列的默认值?

例:

table Event
Id int (auto-increment) not null
Description nvarchar(50) not null
Date datetime not null
Run Code Online (Sandbox Code Playgroud)

这条线:

Insert into Event(Description) values('teste');
Run Code Online (Sandbox Code Playgroud)

应该插入一行,Date值应该是当前日期.

Jas*_*son 94

使用GETDATE()函数作为值添加默认约束.

ALTER TABLE myTable 
  ADD CONSTRAINT CONSTRAINT_NAME
    DEFAULT GETDATE() FOR myColumn
Run Code Online (Sandbox Code Playgroud)

  • 在PostgreSQL中它将是:"alter table myTable add column mydatecol date default now();" ..我只添加此注释,因为问题标题中未提及Sql-Server.可能会帮助PostgreSQL用户...... (9认同)

小智 19

CREATE TABLE Orders(
    O_Id int NOT NULL,
    OrderNo int NOT NULL,
    P_Id int,
    OrderDate date DEFAULT GETDATE() // you can set default constraints while creating the table
)
Run Code Online (Sandbox Code Playgroud)

  • 此表单设置一个未命名的约束.最好命名约束:`[...] OrderDate DATE CONSTRAINT DF_Orders_date DEFAULT GETDATE()[...]` (2认同)

Bla*_*zes 5

您可以使用:

Insert into Event(Description,Date) values('teste', GETDATE());
Run Code Online (Sandbox Code Playgroud)

此外,您可以更改表格,以便“日期”具有默认值“GETDATE()”


She*_*ets 5

我的数据库项目也遇到了这种需求。我决定在这里分享我的发现。

1)当数据已经存在时,没有办法在没有默认值的情况下使用 NOT NULL 字段(我可以添加没有 DEFAULT 值的非空列吗

2)这个话题已经讨论了很长时间了。这是一个 2008 年的问题(向 SQL Server 中的现有表添加具有默认值的列

3) DEFAULT 约束用于为列提供默认值。如果没有指定其他值,则默认值将添加到所有新记录中。(https://www.w3schools.com/sql/sql_default.asp

4) 我用于开发的 Visual Studio 数据库项目非常适合为您生成更改脚本。这是为我的数据库升级创建的更改脚本:

GO
PRINT N'Altering [dbo].[PROD_WHSE_ACTUAL]...';

GO
ALTER TABLE [dbo].[PROD_WHSE_ACTUAL]
    ADD [DATE] DATE DEFAULT getdate() NOT NULL;
Run Code Online (Sandbox Code Playgroud)

-

以下是我使用 Visual Studio 进行开发更新数据库所采取的步骤。

1)添加默认值(Visual Studio SSDT:DB项目:表设计器) 在此输入图像描述

2) 使用架构比较工具生成更改脚本。

code already provided above
Run Code Online (Sandbox Code Playgroud)

3) 在应用更改之前查看数据。 在此输入图像描述

4) 查看应用更改后的数据。 在此输入图像描述