2016-09-29 39 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]