两个日期之间的日期比较?

时间:2009-10-09 11:53:08

标签: sql-server

  

可能重复:
  Value should be 0 between the two dates?

SQL Server 2000

表1

ID Date Workedtime

001 23-02-2009 08:00:00
001 24-02-2009 15:00:00
001 25-02-2009 17:00:00
002 ...

所以......,

表2

ID FromDate ToDate

001 24-02-2009 25-02-2009
002 27-02-2009 03-03-2009

...

我想将table1的日期和ID与Table2 ID FromDate,ToDate进行比较,意思是 表1与FromDate ToDate的日期比较,如果日期介于fromdate和todate之间,则工作时间应显示为不存在。

预期产出

ID Date Workedtime

001 23-02-2009 08:00:00
001 24-02-2009 absent
001 25-02-2009 absent
002 ...

需要查询帮助

1 个答案:

答案 0 :(得分:2)

这应该有助于您在上面指定的内容

DECLARE @Table1 TABLE(
        ID VARCHAR(10),
        Date DATETIME,
        Workedtime VARCHAR(10)
)

INSERT INTO @Table1 (ID,Date,Workedtime) SELECT '001', '23 Feb 2009', '08:00:00'
INSERT INTO @Table1 (ID,Date,Workedtime) SELECT '001', '24 Feb 2009', '15:00:00'
INSERT INTO @Table1 (ID,Date,Workedtime) SELECT '001', '25 Feb 2009', '17:00:00'

DECLARE @Table2 TABLE(
        ID VARCHAR(10),
        FromDate DATETIME,
        ToDate DATETIME
)

INSERT INTO @Table2 (ID,FromDate,ToDate) SELECT '001', '24 Feb 2009', ' 25 Feb 2009'

SELECT  t1.ID,
        t1.Date,
        CASE WHEN t2.ID IS NULL THEN t1.Workedtime ELSE 'absent' END Workedtime
FROM    @Table1 t1 LEFT JOIN
        @Table2 t2 ON t1.ID = t2.ID
                    AND t1.Date BETWEEN t2.FromDate AND t2.ToDate