java - 使用 LIKE 仅搜索包含年份和月份的日期

标签 java mysql sql database

我想过滤我的表格以按月显示记录,所以我为用户输入制作了一个文本框。现在我不知道我的查询是否正确。我没有任何错误,但也没有任何结果。我使用 LIKE 是因为我没有提供具体的日期。有人可以建议更好的方法吗?

enter image description here

enter image description here

ConnectToDatabase conn = null;
conn = ConnectToDatabase.getConnectionToDatabase(); 
String query = "Select * from inventoryreport where InDate LIKE "+txtYear.getText()+""+ txtMonth.getText()+"";
conn.setPreparedStatement(conn.getConnection().prepareStatement(query));
conn.setResultSet(conn.getPreparedStatement().executeQuery());
        java.sql.ResultSetMetaData metaData = conn.getResultSet().getMetaData();
        int columns = metaData.getColumnCount();
        for (int i = 1; i <= columns; i++) {
            columnNames.addElement(metaData.getColumnName(i));
        }

最佳答案

LIKE 这是错误的选择,因为您的数据库不使用索引并且会很慢(并且不起作用)。 查询是这样的:

SELECT * FROM inventoryreport WHERE YEAR(Date_column) = 2014 AND MONTH(Date_column) = 3;

所以你的代码是:

String query = "Select * from inventoryreport where YEAR(InDate) = " +txtYear.getText()+" AND MONTH(InDate) = "+ txtMonth.getText();

关于java - 使用 LIKE 仅搜索包含年份和月份的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22493562/

相关文章:

java - 在运行时找不到类,但在编译时使用命令行找到类

php - WordPress 'If' 声明

mysql - 为什么我无法将数据插入数据库

mysql - 在 sql 中选择具有重复多次的每个 ID 的最新日期的行

mysql - MySQL中如何返回结果列表,WHERE只返回一个

java - 计算(紧凑)字符串的内存使用量

java - maven tomcat7 :deploy fails with status code:403, ReasonPhrase:Forbidden

java - 如何使驱动程序类中的方法看到另一个类的子类?

php - SQL查询返回字段名但不返回值

php - MySQL 结果数组到 session 变量