Oracle-11g

獲取兩個月之間的日期

  • May 3, 2016

我能知道為什麼我在我的 SQL 語句中得到奇怪的輸出,即我的表在 5 月有兩個日期,但它只出現一個月,這與我測試它工作的日期範圍相同。

   select distinct To_Char (attendance_date,'dd/MM/yyyy') 
   from DIT_2010MAR_CIT4114A_FYP1_NO
   where attendance_Date between To_Date ('05', 'MM') and 
   To_Date ('05', 'MM');

實際上,您的查詢在我的測試中沒有返回任何內容:(。原因是attendance_date它不在您指定的條件之間(To_date('05','MM')並且 To_date('05','MM')返回相同的值)。

您可以更改程式碼 ...where attendance_date between To_date('05','MM') and To_date('06','MM');以選擇 5 月份的所有日期。

SQL> desc atten;
Name                      Null?    Type
----------------------------------------- -------- ----------------------------
ATTENDANCE_DATE                    DATE

SQL> select * from atten;

ATTENDANC
---------
05-MAY-16
03-JUN-16
03-JUL-16
03-MAY-16

SQL> select distinct To_Char (attendance_date,'dd/MM/yyyy') from atten where attendance_Date between To_Date ('05', 'MM') and To_Date ('05', 'MM');

no rows selected

您可以嘗試以下方法來獲得結果。

SQL> select to_char(attendance_date, 'dd/mm/yyyy') from atten
where extract(month from attendance_date) = 5;  2  

TO_CHAR(AT
----------
05/05/2016
03/05/2016

或如果您希望顯示 5 到 6 個月之間的出勤日期(如您的問題標題所示)。

select to_char(attendance_date, 'dd/mm/yyyy') from atten
where extract(month from attendance_date) = 5 OR extract(month from attendance_date)=6;
TO_CHAR(AT
----------
05/05/2016
03/06/2016
03/05/2016

引用自:https://dba.stackexchange.com/questions/137298