【问题标题】:From Date < To Date [duplicate]从日期 < 到日期 [重复]
【发布时间】:2018-06-25 12:29:30
【问题描述】:
declare @Education table (
ID                             int,
[From]                         date,
[To]                           date,
TitleOfQualification           nvarchar(100),
OrganisationProvidingEducation nvarchar(100),
City_ID                        int,
Country_ID                     int,
actionType                     nvarchar(20));

这是我正在使用的表格,我想让“起始日期”始终位于“截止日期”之前。例如:当我输入“起始日期”的值时,它应该始终小于“截止日期”日期'(从日期

【问题讨论】:

  • 你想要什么??以及您为此尝试了什么??
  • 你需要一个检查约束。检查周围(双关语)
  • 选择 T.Item.query ('./ID') .value ('.', 'int') , T.Item.query ('./FromDate') .value ('. ', 'date') , T.Item.query ('./ToDate') .value ('.', 'date') , T.Item.query ('./__action') .value ('.', 'nvarchar(20)') from @xmlInput.nodes ('/SQLP/P/data/dataelement/EDU/HREducation') as T(Item) 添加约束 CHECK_DATE CHECK (FromDate
  • @Danja 为什么你认为这会起作用?您不能只是在查询中间添加一些 ddl。您需要阅读约束并了解它们是什么。

标签: sql sql-server stored-procedures


【解决方案1】:

您可以使用check 约束:

declare @Education table (
    ID                             int,
    FromDate                       date,
    ToDate                         date,
    TitleOfQualification           nvarchar(100),
    OrganisationProvidingEducation nvarchar(100),
    City_ID                        int,
    Country_ID                     int,
    actionType                     nvarchar(20),
    check (FromDate < ToDate)
);

不要使用fromto 作为列名。这些是保留字,是 SQL 语法的组成部分。

【讨论】:

  • 拜托,这总是骗人的。
  • 选择 T.Item.query ('./ID') .value ('.', 'int') , T.Item.query ('./FromDate') .value ('. ', 'date') , T.Item.query ('./ToDate') .value ('.', 'date') , T.Item.query ('./__action') .value ('.', 'nvarchar(20)') from @xmlInput.nodes ('/SQLP/P/data/dataelement/EDU/HREducation') as T(Item) 添加约束 CHECK_DATE CHECK (FromDate
【解决方案2】:

您需要添加这样的约束:

ALTER TABLE education 
ADD CONSTRAINT CHECK_DATES CHECK ([from] < [to]);

【讨论】:

  • 选择 T.Item.query ('./ID') .value ('.', 'int') , T.Item.query ('./FromDate') .value ('. ', 'date') , T.Item.query ('./ToDate') .value ('.', 'date') , T.Item.query ('./__action') .value ('.', 'nvarchar(20)') from @xmlInput.nodes ('/SQLP/P/data/dataelement/EDU/HREducation') as T(Item) 添加约束 CHECK_DATE CHECK (FromDate
猜你喜欢
  • 1970-01-01
  • 2011-08-27
  • 2016-10-07
  • 2023-04-08
  • 1970-01-01
  • 2012-05-06
  • 2016-02-25
  • 2013-11-18
  • 1970-01-01
相关资源
最近更新 更多