2015-11-23 83 views
1

我只想比較我的當前日期與時間戳字段唯一的日期不是時間,但它不與它比較,因爲查詢變得像這樣。我怎樣才能做到這一點好心幫比較to_date(CurrentDate)與時間戳

查詢:

SELECT com.PHONE_NUMBER 
FROM communication com 
WHERE com.COMMUNICATION_DATE = TO_DATE('23-11-15', 'dd-MM-yy') 

數據庫表字段值:

02-NOV-15 18.56.00.000000000 

功能:

public static String getCurrentDate() throws ParseException 
    { 
     DateFormat dateFormat = new SimpleDateFormat("dd-MM-yy"); 
     Date date = new Date(); 

     return dateFormat.format(date); 
    } 
+0

您是否嘗試過TO_TIMESTAMP發揮作用? –

+0

我只想比較日期而不是時間 – user3548196

+0

它可以幫助你嗎? https://開頭的社區。oracle.com/thread/2381171。你可以簡單地使用TRUNC。 –

回答

1

注:其實這幾乎是不可能與一個存儲的日期毫秒符合實際日期。

UPDATE:

I just want to compare the date not time


然後,得到Calendar的實例,讓今天的日期,設置字段設爲零(小時,分鐘,等...),並用比較SimpleDateFormat僅提取日期:

public static boolean isEqualDate(String toCompare) throws Exception { 
    DateFormat df = new SimpleDateFormat("dd-MMM-yy"); 
    Date toCompareDate = df.parse(toCompare); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.HOUR, 0); 
    calendar.set(Calendar.MINUTE, 0); 
    calendar.set(Calendar.SECOND, 0); 
    calendar.set(Calendar.MILLISECOND, 0); 
    return toCompareDate.equals(calendar.getTime()); 
} 

實施例執行:

public static void main(String[] args) throws Exception { 
    String date = "23-NOV-15 18.56.00.000000000"; 
    System.out.println(isEqualDate(date)); 
} 

OUTPUT:

true 
+0

等待..是不是它與日期算術有關的SQL問題?或者我錯過了什麼? –

+0

等待,你可以看到一個Java方法轉換字符串到日期?或者你正在介入你不感興趣的部分問題? –

+0

我只是問你真的是否依賴於SQL和Java呢?因爲這會讓我們的答案不完整。沒有冒犯的意思! –

0

WHERE com.COMMUNICATION_DATE = TO_DATE('23-11-15', 'dd-MM-yy')

平等運營商將無法​​獲取具有時間部分的行。

你可以在日期列上使用TRUNC,然而,這將抑制對日期列任何指數使用。

正確和有效的方法是使用使得它將使用任何常規索引日期列一個日期範圍條件。

WHERE com.COMMUNICATION_DATE >= TO_DATE('23-11-15', 'dd-MM-yy') 
AND com.COMMUNICATION_DATE < TO_DATE('23-11-15', 'dd-MM-yy') +1 

此外,當你正在處理僅日期元件而沒有任何時間部分,然後使用ANSI日期文字它使用一個固定的格式'YYYY-MM-DD'因此它是NLS獨立

WHERE com.COMMUNICATION_DATE >= DATE '2015-11-23' 
AND com.COMMUNICATION_DATE < DATE '2015-11-23' +1 

一個簡單的演示:

SQL> SELECT * 
    2 FROM dual 
    3 WHERE SYSTIMESTAMP >= DATE '2015-11-23' 
    4 AND SYSTIMESTAMP < DATE '2015-11-23' +1; 

D 
- 
X 
+0

可能會出現錯誤:SQL錯誤:ORA-01830:日期格式圖片在轉換整個輸入字符串之前結束 –

+0

@MuhammadMuazzam爲什麼?不可能。我添加了一個演示,查看答案。 –

+1

@MuhammadMuazzam:用這個答案中的SQL,這個錯誤不可能出現。 –