关于sql:使用当前日期作为列的默认值

use current date as default value for a column

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

例子:

1
2
3
4
TABLE Event
Id INT (auto-INCREMENT) NOT NULL
Description nvarchar(50) NOT NULL
DATE datetime NOT NULL

行:

1
INSERT INTO Event(Description) VALUES('teste');

应插入一行,日期值应为当前日期。


添加一个以getDate()函数为值的默认约束。

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


1
2
3
4
5
6
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
)


您可以使用:

1
INSERT INTO Event(Description,DATE) VALUES('teste', GETDATE());

此外,还可以更改表,使"日期"具有默认值"getDate()"


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

1
2
3
4
 ALTER TABLE
 [dbo].[TABLE_NAME]
 ADD  CONSTRAINT [Constraint_Name]
 DEFAULT (getdate()) FOR [Column_Name]

更改表查询

1
2
ALTER TABLE [dbo].[TABLE_NAME](
    [PDate] [datetime] DEFAULT GetDate())

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

1)当数据已经存在时,如果没有默认值,则无法访问非空字段(可以添加没有默认值的非空列吗)

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

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

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

1
2
3
4
5
6
GO
PRINT N'Altering [dbo].[PROD_WHSE_ACTUAL]...';

GO
ALTER TABLE [dbo].[PROD_WHSE_ACTUAL]
    ADD [DATE] DATE DEFAULT getdate() NOT NULL;

-

以下是我使用Visual Studio for Development更新数据库所采取的步骤。

1)添加默认值(Visual Studio SSDT:DB项目:表设计器)氧化镁

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

1
code already provided above

3)在应用更改之前查看数据。氧化镁

4)应用更改后查看数据。氧化镁


表创建语法可以类似于:

1
2
3
CREATE TABLE api_key(api_key_id INT NOT NULL IDENTITY(1,1)
PRIMARY KEY, date_added DATE DEFAULT
GetDate());

插入查询语法可以类似于:

1
INSERT INTO api_key VALUES(GETDATE());


要将当前日期用作日期列的默认日期,您需要:

1-打开表设计器

2-选择列

3-转到列属性

4-设置默认值的值或绑定到(getDate())

enter image description here