为整个数据库设置日期时间的默认值

时间:2019-02-07 04:48:41

标签: sql-server datetime

我试图找到一种方法,可以更改SQL Server中所有表的datetime列的默认值。当前,任何不允许datetime的{​​{1}}类型的新列的默认值为nulls。我想将此值更改为1901/01/01 00:00:00以匹配Visual Studio中的默认0001/01/01 00:00:00值。

我知道我可以通过界面或使用以下命令逐列进行此操作:

DateTime

但这是在创建表后 完成的,并且在生产中难以维护。我正在尝试设置一种方法来设置它,以便任何 new 表都可以从更高的级别“继承”此参数,我假设是数据库设置。

类似的东西:

ALTER TABLE YourTable 
    ADD CONSTRAINT DF_YourTable DEFAULT 'SOMEDATE' FOR YourColumn

有人知道实现此目标的方法吗?

1 个答案:

答案 0 :(得分:2)

我不认为您可以使用单个命令在全球范围内做到这一点。

一种建议是像下面这样从DATETIME2创建用户定义的数据类型。

1-创建默认值。您需要先创建一个默认类型,如下所示。

CREATE DEFAULT Default_DT
AS '0001/01/01 00:00:00'

2-创建用户定义的数据类型。一旦创建了默认值,您就需要从DATETIME2创建自定义数据类型,如下所示。

CREATE TYPE [dbo].[DateTimeD] FROM [datetime2](7) NOT NULL

3-绑定默认值,您需要将“默认值”类型映射到用户定义的数据类型,如下所示。

EXEC sys.sp_bindefault @defname=N'[dbo].[Default_DT]', @objname=N'[dbo].[DateTimeD]'

示例

CREATE TABLE TEST(DtColumn [DateTimeD], ID INT);
insert into TEST(id) select 1
SELECT * FROM TEST

输出:

DtColumn                         ID
0001-01-01 00:00:00.0000000       1