Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL唯一约束中仅使用DateTime列的年份?_Sql_Sql Server_Unique Key - Fatal编程技术网

如何在SQL唯一约束中仅使用DateTime列的年份?

如何在SQL唯一约束中仅使用DateTime列的年份?,sql,sql-server,unique-key,Sql,Sql Server,Unique Key,我正在创建一个唯一的约束,只允许每年使用一个注册号, 我的意思是,在注册表中可以存在多个数字2,但前提是 是在不同的年份创建的。我听说可以用独特的 约束,但我不知道如何创建,无需为年创建一列,为月创建另一列,等等 质疑 更改表dbo.NCIA_FFAA 添加约束uk_corresia UNIQUE(num_corres,fecha_cre) num_corres是注册表号,fecha_cre是创建日期,但我只需要年份,不需要整个列,可以吗 谢谢使用计算列,然后创建索引。比如: alter tab

我正在创建一个唯一的约束,只允许每年使用一个注册号, 我的意思是,在注册表中可以存在多个数字2,但前提是 是在不同的年份创建的。我听说可以用独特的 约束,但我不知道如何创建,无需为年创建一列,为月创建另一列,等等

质疑

更改表dbo.NCIA_FFAA

添加约束uk_corresia UNIQUE(num_corres,fecha_cre)

num_corres是注册表号,fecha_cre是创建日期,但我只需要年份,不需要整个列,可以吗


谢谢

使用计算列,然后创建索引。比如:

alter table registry add RegistryYear as year(RegistryDate);

create index registry_number_year on Registry(number, RegistryYear);

在SQL Server中,有一种称为“日期”的数据类型—您可以使用该列并在其上创建索引

当然,您也可以将“DATE”类型的计算列添加到表中,只需将DATETIME列的DATE部分填充到该计算列中,使其持久化,并对其进行索引。应该很好用

ALTER TABLE dbo.Entries
   ADD yearOnly as Year(CAST(CompositionDate AS DATE)) PERSISTED

CREATE UNIQUE INDEX UX_Entries ON Entries(yearOnly , Slug)

嘿,我遵循你关于使用唯一索引的建议,但现在我有另一个问题,我创建的程序在创建具有相同编号和日期的行时没有收到任何错误(它也没有创建行),但我需要这个板条箱有一个错误,以便用户可以更正。