【问题标题】:SQL: add column constraint that date must be end of monthSQL:添加日期必须为月末的列约束
【发布时间】:2026-02-11 06:40:01
【问题描述】:

SQL Server:我正在寻找一种在数据库级别强制将日期列作为本月最后一天的方法(注意:不是当前的最后一天月)。有没有办法改变表来实现这个约束?

谢谢

【问题讨论】:

  • 查看day(dateadd(day, 1, dt)) = 1
  • 为什么投反对票?
  • 我让 Yogesh 修复了他的答案,这应该符合您的要求。随意对我的一些事情表示感谢。

标签: sql sql-server constraints


【解决方案1】:

您可以通过eomonth() 函数实现检查约束来验证日期(即月末)

ALTER table t
ADD CONSTRAINT CHK_Date CHECK(<date> = eomonth(<date>))

【讨论】:

  • 不适用于非当前月份的月底。
  • 不应该是“CHECK( = eomonth())”吗?
【解决方案2】:

但是,您可以执行以下任何操作:

  • 在触发器中进行验证。应该在插入和更新之后。
  • 创建另一个包含所有可能的月末日期的表,并为该列使用外键。

Yogesh 的答案是正确的。

【讨论】: