Как получить список данных текущей даты из MySQL, используя Hibernate? - PullRequest
0 голосов
/ 29 декабря 2018
public <E> List viewc(String a,String c) {      
        List l1=new ArrayList();
        try {
            con = utilimpl.openSession();
            if(con != null)
            {
              st =  con.beginTransaction();
               Query q=con.createQuery("FROM "+a+"  WHERE cdate="+c+"");
                l1=q.list();
               st.commit();
              }
            else
            {
                System.out.println("no connection found!!");
            }

        } catch (HibernateException e) {
            e.printStackTrace();
            if(st != null)
            { 
                st.rollback();
            }
        }
        return l1;

        }

Ниже приведен код метода doget сервлета. Я хочу получить список data.cdate - это столбец моей базы данных, а тип данных - метка времени в mysql.

   SimpleDateFormat k=new SimpleDateFormat("yyyy-MM-dd");
    Date s=new Date();
    String c=k.format(s);       
    List<userModel> ln=d.viewc("userModel",c);
    request.setAttribute("list",ln);

1 Ответ

0 голосов
/ 31 декабря 2018

Поскольку cdate имеет тип метки времени, он состоит из даты + времени, и вы пытаетесь сравнить по части даты только с равенством.

Попробуйте что-то вроде этого:

Query q=con.createQuery("FROM "+a+"  WHERE DATE(cdate)=DATE("+c+")");

РЕДАКТИРОВАТЬ: Чтобы сравнение работало, значения c и cdate должны быть в одном формате.Для этого запрос может быть изменен следующим образом:

Query q=con.createQuery("FROM "+a+"  WHERE DATE_FORMAT(DATE(cdate),'%Y-%m-%d')="+c);

Здесь c должен иметь формат: 'гггг-мм-дд', например, '2019-01-19'

DATE_FORMAT преобразует полученную дату в желаемый формат как строковое значение, и теперь сравнение с 'c' должно остаться в силе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...