检查日期范围从From和To Date

时间:2018-01-17 12:42:26

标签: sql sql-server

我有一个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。

2 个答案:

答案 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
    )