2017-10-12 23 views
0

例如,如果我们要找到它位于两个特定日期之间的表中的一些数据,我们写这样的查询:如何准备查询语句之间使用

Select * from TableName where Date lies between '01-01-2000' and '01-01-2002' 

我只是想知道如何在PreparedQueryStatement中使用此查询?

+0

什么样的代码有你试过了吗? –

+2

[使用JDBC在SQL中进行日期搜索?](https://stackoverflow.com/questions/19583806/searching-between-dates-in-sql-with-jdbc)或https://stackoverflow.com/问题/ 22309455/select语句两间的Java-SQL日期 – nos

回答

1

您需要使用占位符字符串,然后传递的java.sql.Date实例的PreparedStatement

String query = "Select * from TableName where some_date_column between ? and ?"; 
java.sql.Date dateOne = java.sql.Date.valueOf(LocalDate.of(2000, 1, 1)); 
java.sql.Date dateTwo = java.sql.Date.valueOf(LocalDate.of(2002, 1, 1)); 

PreparedStatement pstmt = connection.prepareStatement(query); 
pstmt.setDate(1, dateOne); 
pstmt.setDate(2, dateTwo); 
ResultSet rs = pstmt.executeQuery(); 
... process the result ... 

决不通时间(或时间戳或数字)为字符串!


注意,SQL BETWEEN操作包括两个值。表达

some_date_column BETWEEN date '2000-01-01' and date '2002-01-01' 

等同于:

some_date_column >= date '2000-01-01' 
and some_date_column <= date '2002-01-01' 

如果你想排除 '2002-01-01'行你需要:

some_date_column BETWEEN date '2000-01-01' and date '2001-12-31'