我想選擇一個日期範圍內的數據選擇一個日期範圍另一個日期範圍內在於如何從不同範圍的日期字段
我有以下表
ID FNAME LNAME BEG_EPISODE_DT END_EPISODE_DT TRGT_DT
1 John G 12/20/16 02/11/17 03/31/17
2 King R 11/10/16 12/25/17 03/31/17
3 Bundt H 10/19/16 01/16/17 03/31/17
4 Smith F 02/16/16 04/08/17 03/31/17
以上數據顯示每個人的情節。情節是指從一個小插曲(BEG_EPISODE_DT)的開始時間,結束它(END_EPISODE_DT)
我需要選擇數據,使得3個月內的每個單獨的謊言(TRGT_DT)情節的目標日期之前,即情節(BEG_EPISODE_DT或END_EPISODE_DT)應該在03/31/17之間3個月之前它
我想要使用以下邏輯。但我不能讓它工作
select * from mytable
BEG_EPISODE_DT between ((ADD_MONTHS(TRGT_DT,-3), TRGT_DT) or
END_EPISODE_DT between ((ADD_MONTHS(TRGT_DT,-3), TRGT_DT) or
BEG_EPISODE_DT = (ADD_MONTHS(TRGT_DT,-3) or TRGT_DT) or
END_EPISODE_DT = (ADD_MONTHS(TRGT_DT,-3) or TRGT_DT)
我找了如下結果
ID FNAME LNAME BEG_EPISODE_DT END_EPISODE_DT TRGT_DT
1 John G 12/20/16 02/11/17 03/31/17
3 Bundt H 10/19/16 01/16/17 03/31/17
4 Smith F 02/16/16 04/08/17 03/31/17
感謝您的幫助
編輯:BEG_EPISODE_DT或END_EPISODE_DT可以等於TRGT_DT或(TRGT_DT - 3個月)
儘管Oracle確實購買了mysql,但在sw級別上它們仍然是不同的產品。 – Shadow
我不明白解釋。如果包含TRGT_DT = 03/31/17的行,如果BEG_EPISODE_DT或END_EPISODE_DT(或者可能兩者)在2017年1月1日至2017年3月31日之間?請注意,01/01/2017不是2017年3月31日前的三個月(即2016年12月31日)。除此之外,目前還不清楚爲什麼你減去兩個月而不是三個月,然後從任何東西中減去0。也完全不清楚爲什麼你截至月初 - 在你的邏輯中完全沒有提到這一點。請澄清。 – mathguy
請參閱mairguy的回答下Jair的問題...... Whi是Smith包含在「期望的輸出」中嗎?開始和結束日期都不在2016年12月31日至2017年3月31日之間。或者你的意思是不同的 - 你不希望特定的開始日期或結束日期在那個時間間隔內,而是,「情節」的任何部分至少有一天與該時間間隔相同? (如果是這樣,那麼爲什麼國王不包括在輸出中呢?) – mathguy