HQL中使用SQL的函数Datepart问题。
SELECTDatepart(dw,ec.date)fromExecutorCalendarec我想查出谋日期对应的是星期几。SQL能成功执行,转换成HQL该怎么写?这样...
SELECT Datepart(dw,ec.date) from ExecutorCalendar ec
我想查出谋日期对应的是星期几。SQL能成功执行,转换成HQL该怎么写?这样写不对吗? 展开
我想查出谋日期对应的是星期几。SQL能成功执行,转换成HQL该怎么写?这样写不对吗? 展开
1个回答
展开全部
HQL使用sql函数不靠谱,你用sql吧,你用hql能返回什么?不也是个字符串。
HQL是Hibernate的一套语法和标准,你写的查询语句必须符合它的要求,而对于Dialect(方言)只是充当了HQL到SQL的一个翻译官而已,它只能将HQL语句翻译成SQL语句,是单向的,不能把SQL翻译成HQL,明白了吧。所以对于SQL中的一些函数,它是不认识的。除非是各种数据库中通用的函数。
HQL之所以能够用在大部分数据库上,就在于它是各种数据库语句的子集,应该来说是是各种数据库通用的语句,只不过在执行的时候,需要相应数据库的翻译官,就是Dialect,翻译成相应数据支持的语句。
试想,如果HQL要是能用各种数据库中的函数,那岂不是太难制定统一的标准了吗?并且使用起来也是非常困难的。
如果实在想用HQL 那就 查出ec.date 再用java的Calendar类求一下星期几吧。
HQL是Hibernate的一套语法和标准,你写的查询语句必须符合它的要求,而对于Dialect(方言)只是充当了HQL到SQL的一个翻译官而已,它只能将HQL语句翻译成SQL语句,是单向的,不能把SQL翻译成HQL,明白了吧。所以对于SQL中的一些函数,它是不认识的。除非是各种数据库中通用的函数。
HQL之所以能够用在大部分数据库上,就在于它是各种数据库语句的子集,应该来说是是各种数据库通用的语句,只不过在执行的时候,需要相应数据库的翻译官,就是Dialect,翻译成相应数据支持的语句。
试想,如果HQL要是能用各种数据库中的函数,那岂不是太难制定统一的标准了吗?并且使用起来也是非常困难的。
如果实在想用HQL 那就 查出ec.date 再用java的Calendar类求一下星期几吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询