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


79

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

例:

table Event
Id int (auto-increment) not null
Description nvarchar(50) not null
Date datetime not null

该行:

Insert into Event(Description) values('teste');

应该插入一行,并且Date值应该是当前日期。


1
Steam

Answers:


107

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

ALTER TABLE myTable 
  ADD CONSTRAINT CONSTRAINT_NAME
    DEFAULT GETDATE() FOR myColumn

9
在PostgreSQL中将是:“更改表myTable添加列mydatecol date default now();”;..我仅添加此注释,因为问题标题中未提及Sql-Server。可能会帮助PostgreSQL用户...
alfonx 2011年

1
如果该列已存在于表中,则将采用这种形式;如果在INSERT语句(或CURSOR插入)中省略了该值,则没有设置默认值的约束。
TT。

编写方式似乎缺少CONSTRAINT关键字。应该是 ... ADD CONSTRAINT MY_CONSTRAINT_NAME ...
Faust 2014年

1
是否GETDATE()给我们UTC时间?
Zapnologica

20
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
)

3
此表单设置了一个未命名的约束。最好将约束命名为:[...]OrderDate DATE CONSTRAINT DF_Orders_date DEFAULT GETDATE()[...]
TT。

5

您可以使用:

Insert into Event(Description,Date) values('teste', GETDATE());

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


3

选择要在其中获取当前日期默认值的表列名称

 ALTER TABLE 
 [dbo].[Table_Name]
 ADD  CONSTRAINT [Constraint_Name] 
 DEFAULT (getdate()) FOR [Column_Name]

修改表查询

Alter TABLE [dbo].[Table_Name](
    [PDate] [datetime] Default GetDate())

3

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

1)当数据已经存在时,没有方法没有默认值就不能没有NOT NULL字段(我可以添加没有DEFAULT值的not null列

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;

--

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

1)添加默认值(Visual Studio SSDT:数据库项目:表设计器) 在此处输入图片说明

2)使用模式比较工具生成更改脚本。

code already provided above

3)在应用更改之前查看数据。 在此处输入图片说明

4)应用更改后查看数据。 在此处输入图片说明



0

表创建语法可以像这样:

Create table api_key(api_key_id INT NOT NULL IDENTITY(1,1) 
PRIMARY KEY, date_added date DEFAULT 
GetDate());

插入查询语法可以像这样:

Insert into api_key values(GETDATE());

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.