用java代码写数据库只有出生日期,怎么做年龄的区间查询
时间: 2024-05-09 14:16:58 浏览: 100
可以通过 SQL 语句中的函数和运算符来实现。
例如,可以使用 MySQL 中的 DATEDIFF() 函数来计算出生日期和当前日期之间的天数,然后将天数转换为年龄,然后根据所需的年龄区间,在 WHERE 子句中添加相应的条件。
具体的 SQL 语句示例如下:
```sql
SELECT * FROM users
WHERE YEAR(CURDATE()) - YEAR(birthday) -
CASE WHEN DATE_FORMAT(CURDATE(), '%m-%d') < DATE_FORMAT(birthday, '%m-%d')
THEN 1 ELSE 0 END
BETWEEN 18 AND 25;
```
这个 SQL 查询将从名为 "users" 的表中选取符合年龄区间为 18 到 25 岁的用户记录。
使用 Java 代码连接数据库并执行此 SQL 查询,可以参考以下示例代码:
```java
import java.sql.*;
public class AgeQueryDemo {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/mydb";
String username = "myuser";
String password = "mypassword";
try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
PreparedStatement stmt = conn.prepareStatement(
"SELECT * FROM users" +
" WHERE YEAR(CURDATE()) - YEAR(birthday) - " +
" CASE WHEN DATE_FORMAT(CURDATE(), '%m-%d') < DATE_FORMAT(birthday, '%m-%d')" +
" THEN 1 ELSE 0 END" +
" BETWEEN ? AND ?")) {
stmt.setInt(1, 18);
stmt.setInt(2, 25);
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
System.out.printf("User: %d, %s, %s%n",
rs.getInt("id"), rs.getString("name"), rs.getDate("birthday"));
}
}
} catch (SQLException ex) {
System.out.println("Database error: " + ex.getMessage());
}
}
}
```
此示例假设数据库表 "users" 中包含 "id"、"name" 和 "birthday" 三个列。"""
阅读全文