【问题标题】:Query For Dates Based on start date and end date根据开始日期和结束日期查询日期
【发布时间】:2017-08-16 16:22:54
【问题描述】:

我有两个日期选择器从日期到日期。然后是一个文本框。选择日期并在文本框中输入一些名称后,我需要过滤表中的记录。我的表中有入学日期。我需要编写查询以便如果学生姓名匹配,并且如果 admissionDate 介于 fromdate 和 todate 之间,那么它应该显示记录

我正在编写此查询,但它不起作用。

SELECT studentId, studentName, admissionDate
from Student
where studentName like :studentName
  AND admissionDate BETWEEN (fromDate like :fromDate AND toDate like :toDate)
order by studentId desc

从 DaoImpl 我得到 fromDate 和 toDate 值

DaoImpl

    @Override
    public List<Student> getSearchResultsByKeyword(String search,Date
    fromDate,Date toDate) {
    List<Student> users = new ArrayList<Student>();
    System.out.println("Student Name:"+search+"fromDate:"+fromDate);
    Query query = 
    sessionFactory.getCurrentSession().createSQLQuery(SEARCHSTUDENTS);
    query.setParameter("studentName", "%"+search+"%");
    query.setParameter("fromDate", fromDate);
    query.setParameter("toDate", toDate);
    /*query.setParameter("admissionDate","%"+search+"%");
    query.setParameter("rollNumber","%"+search+"%");
    query.setParameter("gender","%"+search+"%");*/
    query.setResultTransformer
    (Transformers.aliasToBean(Student.class));
    users = query.list();
    return users;
    }

【问题讨论】:

  • *不工作是什么意思*。你有什么错误吗?
  • 你的BETWEEN很奇怪……
  • 我在 sql 语法中遇到错误
  • 试试... AND admissionDate BETWEEN :fromDate AND :toDate ...
  • 你能发布你遇到的错误吗?

标签: sql


【解决方案1】:

尝试不使用 between 像这样

SELECT studentId, studentName, admissionDate
from Student
where studentName like :studentName
  AND admissionDate >= :fromDate AND admissionDate <= :toDate
order by studentId desc

并确保您发送的日期格式与 DB 日期格式相同(例如 YYYY/MM/DD)

【讨论】:

  • 兄弟如果您了解 angularjs,那么我的个人资料中还有一个问题,例如使用 angularjs 和 spring mvc 将复选框保存到数据库中。如果您有时间,请通过它兄弟。有点紧急
猜你喜欢
  • 1970-01-01
  • 2020-11-16
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多