Java hql中的日期格式
我有一个类似的hqlJava hql中的日期格式,java,hibernate,hql,Java,Hibernate,Hql,我有一个类似的hql hql="SELECT DISTINCT C FROM Client C WHERE lower(str(C.name)) like '%"+sSearch + "%' OR str(day(C.birthday)) like '%"+sSearch "%'; 如您所见,我可以在我的表中搜索sSearch 但问题是,sSearch可以是dd.MM.yyyy格式,也可以不是日期,例如,sSearch=John,而日期类型在DB中是yyyy-MM-dd格式 我想选择dd.M
hql="SELECT DISTINCT C FROM Client C
WHERE lower(str(C.name)) like '%"+sSearch
+ "%' OR str(day(C.birthday)) like '%"+sSearch "%';
如您所见,我可以在我的表中搜索sSearch
但问题是,sSearch可以是dd.MM.yyyy格式,也可以不是日期,例如,sSearch=John,而日期类型在DB中是yyyy-MM-dd格式
我想选择dd.MM.yyyy格式的日期作为使用表达式“like”的字符串
谢谢
用计算机解决了这个问题
hql="SELECT DISTINCT C FROM Client C
WHERE lower(str(C.name)) like '%"+sSearch
+ "%' OR concat(str(day(C.birthday)),'.',str(month(C.birthday)),'.',
str(year(C.birthday))) like '%"+sSearch "%';
如果你使用的是mysql,你可以使用mysql,你可以使用date_格式
"select dictinct c from Client c where lower(str(C.name)) like '%" + sSearch + "%' or
date_format(C.birthday,'%d.%m.%Y') lkie '%" + sSearch +"%'"
但我更喜欢在服务层或控制器层将sSearch转换为类似“yyyy-MM-dd”的字符串,尽管我可以使用这样的代码
" ... C.birtyday like '%"+ sSearch + "%'"
可以使用Dateformat设置日期字符串的格式
DateFormat dateFormat1 = new SimpleDateFormat("dd.MM.yyy");
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
Date d = dateFormat1.parse(sSearch);
hql="SELECT DISTINCT C FROM Client C
WHERE lower(str(C.name)) like '%"+sSearch
+ "%' OR str(day(C.birthday)) like '%"+ dateFormat2.format(d) +"%';
特定于数据库的SQL与HQL无关