2016-09-29 23 views
-1

我有這樣如何解析日期n java到oracle/sql查詢?

String query = "Select * from Orders where ordername = ? and orderDate > SYSDATE - 2 "; 

查詢我將通過**orderName**lastDate從UI或一些常數( 「20-9-2016」)。

orderDate = SYSDATE - 2 - >而不是「2」我會發送lastDate。

它是正確的嗎? SYSDATE oracle函數和「2」之前的常量。現在「2」可以是用戶輸入。

如何用Java編寫一個查詢

String query = "Select * from Orders where ordername = ? and orderDate > SYSDATE - ? "; 

是上面的查詢是否正確?如何寫查詢

public class CheckOrders extends MappingSqlQuery<Object>{ 
     public PendingOrderExists() { 
      super(dataSource, queryConfig 
        .getProperty("query")); 
      super.declareParameter(new SqlParameter("ORDERNAME", Types.VARCHAR)); 
      //orderdate ? how to declare parameter here 
      compile(); 
     } 
} 
+0

試試這個'字符串查詢=「SELECT * FROM訂單,其中ORDERNAME = orderDate存儲= SYSDATE - TO_DATE(?, 'DD-M-YYYY') 「; ' –

+0

難道你不能只用orderDate =?並計算關於Java大小的參數? – StanislavL

+0

對不起,我的查詢看起來像「字符串查詢=」選擇*訂單其中ordername =?和orderDate> SYSDATE - ? 「 – Sri

回答

1

for sysdate-? 的?參數將被設置爲java.sql.Date類的對象而不是java.util.Date類。 java.sql.Date繼承java.util.Date。 java.sql.Date(long time) 這裏的長度是自1月1日以來流逝的毫秒數。

GregorianCalendar gc=new GregorianCalendar(2000, 25, 2); 

java.util.Date dt=gc.getTime(); long lg=dt.getTime(); java.sql.Date sqldt=new java.sql.Date(lg); '

在的setDate通sqldt對象()的PreparedStatement實例的方法。

希望這個作品


[email protected]