SQL检查日期时间在多列中存在

时间:2013-01-23 12:12:50

标签: sql

我有一个BillDate作为日期,并在第一个表中有一个Mark作为位列。 (默认标记= 0)

在第二个表格中,我将FromDate作为日期,并将ToDate作为日期列。

如果FromDate&和BillDate之间存在BillDate,我想设置Mark = 1 TODATE

让我们在第一张表中说数据是

----------------------------
BillDate             | Mark
----------------------------
2012-11-10 11:15:30  | 0

2012-12-12 09:00:00  | 0

在第二个表中,数据是

---------------------------------------------
FromDate             | ToDate
---------------------------------------------
2012-11-01 07:00:00  | 2012-11-09 23:59:59

2012-12-08 07:00:00  | 2012-12-15 23:59:59

所以在上面的场景中只有First表的第二行 有,BillDate->2012-12-12 09:00:00Mark as 1 因为它位于第二行第二行之间

我希望我已经解释了我的情景,

2 个答案:

答案 0 :(得分:0)

您还没有说过您正在使用什么样的SQL,以及是否有其他字段链接您的表。因此假设交叉连接如何:

Update ft
SET mark = 1
FROM FirstTable ft, SecondTable st
WHERE BillDate BETWEEN StartDate AND EndDate

答案 1 :(得分:0)

我认为这适用于大多数/所有DMBS(没有指定)

UPDATE  FirstTable
SET     Mark = 1
WHERE   EXISTS
        (   SELECT  1
            FROM    SecondTable
            WHERE   FirstTable.BillDate BETWEEN SecondTable.Fromdate AND SecondTable.ToDate
        );