我有一个sql表
ProductId Name FromDate To Date
1 A 1-Jan 2017 10-Jan 2017
2 B 5-Feb 2017 5-Feb 2017
当我在网格中插入新记录时,我必须检查该特定名称是否存在所选范围日期的记录
例如,对于名称B,如果新记录来自日期范围(2017年1月5日至2017年1月15日) 由于已经存在5月1日,它应该返回虚假或产品ID。
答案 0 :(得分:1)
' inputDate'可以应用于迄今为止。通过这种方式,可以验证范围:
select t.productId from table t
where inputDate between t.FromDate and t.toDate
and t.Name = 'B'
在您的程序员中添加如下支票:
declare @pid int = (
select t.productId from table t
where inputDate between t.FromDate and t.toDate
and t.Name = @name)
if @pid is null
return cast(0 as bool)
else
return @pid
答案 1 :(得分:0)
尝试以下脚本,如果与现有日期范围存在任何冲突/重叠,则会返回ProductId
DECLARE @Input_From DATE --your from date here
,@Input_To DATE --your to date here
SELECT ProductId
FROM Product_Table
WHERE Name = 'B'
AND ( @Input_From BETWEEN FromDate AND ToDate
OR @Input_To BETWEEN FromDate AND ToDate
OR FromDate BETWEEN @Input_From AND @Input_To
)