-4

このようなテーブルがあります

SELECT V_EP_ID,V_START_DATE,V_END_DATE 
FROM PGATEINTRA.dbo.EMPLOYEE_VACATIONS 
ORDER BY V_EP_ID ASC

上記のクエリの出力は

V_EP_ID     V_START_DATE             V_END_DATE
------------------------------------------------------
28        2010-06-21 00:00:00     2010-06-21 00:00:00
103       2011-06-27 00:00:00     2011-06-27 00:00:00
103       2011-08-12 00:00:00     2011-08-12 00:00:00
104       2011-03-24 00:00:00     2011-03-24 00:00:00
104       2011-05-06 00:00:00     2011-05-06 00:00:00
104       2010-06-07 00:00:00     2010-06-08 00:00:00
104       2011-02-23 00:00:00     2011-02-25 00:00:00
...

私はこのように声明を書きました

SELECT * FROM PGATEINTRA.dbo.EMPLOYEE_VACATIONS 
WHERE V_START_DATE >='2010-06-21 00:00:00' 
   AND V_END_DATE <= '2010-06-21 00:00:00'

から v_start_date と v_end_date を渡すことによってPGATEINTRA.dbo.EMPLOYEE_VACATIONS

そして、私は出力を次のように取得しています

V_ID  V_TYPE  V_EP_ID V_REASON      V_START_DATE         V_END_DATE
----------------------------------------------------------------------------
3      c        28     Took leave   2010-06-21 00:00:00  2010-06-21 00:00:00
7      c       109     Took leave   2010-06-21 00:00:00  2010-06-21 00:00:00

V_START_DATE と V_END_DATE の間のすべての V_EP_ID FROM PGATEINTRA.dbo.EMPLOYEE_VACATIONS を動的に取得する出力が必要です。

4

1 に答える 1

1

ここでカーソルがどこに作用するのかわかりませんが、必要なのは次のDATEDIFF関数だと思います。

WHERE DATEDIFF(DAY, V_START_DATE, V_END_DATE) = 0
于 2012-04-05T15:36:43.350 に答える