У меня есть одна таблица, в которой есть столбец submitted_date (отметка времени без часовой пояс). Мне нужно перечислить все записи в таблице, имеющие конкретную дату в качестве даты. Но не учитывайте время в базе данных. Я извлекаю записи, используя запрос критериев и спящий режим. Как игнорировать время здесь?запрос на спящий режим для временной отметки
Фактически я передаю дату с клиентской стороны и должен получить записи, имеющие ту же дату, что и submit_date. Но не нужно учитывать время.
else if(extjsFilter.getField().equals("submittedDate")) {
String str_date=extjsFilter.getValue();
SimpleDateFormat format1 = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
Date date2 = format1.parse(str_date);
String datenew = format2.format(date2);
Date date = (Date)format2.parse(datenew);
if(extjsFilter.getType().equals("date"))
{
if(extjsFilter.getComparison().equals("gt"))
{
Filter postDateFilterGT = getSession().enableFilter("jobFilterPostDateGT");
postDateFilterGT.setParameter("postDateFilterGT", date);
}
if(extjsFilter.getComparison().equals("lt"))
{
Filter postDateFilterLT = getSession().enableFilter("jobFilterPostDateLT");
postDateFilterLT.setParameter("postDateFilterLT", date);
}
if(extjsFilter.getComparison().equals("eq"))
{
Filter postDateFilterEQ = getSession().enableFilter("jobFilterPostDateEQ");
postDateFilterEQ.setParameter("postDateFilterEQ", date);
}
}
}
Выше мой код. Клиентская сторона выполняется с помощью extjs. Серверный код фильтрации extjs для одного поля даты - это.
Спящий режим приведен ниже.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hiringsteps.ats.job.domain">
<class
name="Job"
table="hs_job_master">
<id name="id" column="job_id" unsaved-value="null">
<generator class="sequence">
<param name="sequence">hs_job_id_seq</param>
</generator>
</id>
<property name="submittedDate" column="submitted_date"/>
<filter name="jobFilterPostDateGT"><![CDATA[submitted_date > :postDateFilterGT]]></filter>
<filter name="jobFilterPostDateLT"><![CDATA[submitted_date < :postDateFilterLT]]></filter>
<filter name="jobFilterPostDateEQ"><![CDATA[:postDateFilterEQ = submitted_date]]></filter>
</class>
<filter-def name="jobFilterPostDateGT">
<filter-param name="postDateFilterGT" type="date"/>
</filter-def>
<filter-def name="jobFilterPostDateLT">
<filter-param name="postDateFilterLT" type="date"/>
</filter-def>
<filter-def name="jobFilterPostDateEQ">
<filter-param name="postDateFilterEQ" type="date"/>
</filter-def>
</hibernate-mapping>
У меня есть две записи в базе данных, отправившие данные, как показано ниже.
2013-02-15 00:00:00
2013-02-15 13: 04: 42,787
Когда я делаю запрос для фильтрации записей, имеющих дату, как сегодня, первая запись с представляется дата 2013-02-15 00:00:00 только восстанавливается.
это потому, что объект даты я использовал для запроса, также имеет это значение «2013-02-15 00:00:00»
Как я сделать запрос, который будет игнорировать часть времени?
не могли бы вы объяснить, что вы подразумеваете под «Но не считаете время в базе данных»? –
waht вы еще не пробовали. ваш вопрос не выяснен –
Не нужно учитывать время чего? Системное время или время db? Время исполнения? – aksappy