hql问题
时间:2011-12-02
来源:互联网
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
//通过截取订单时间的年月来统计月订单数
String month = sdf.format(new Date());
String hql = "from OrderInfo o where (select substring(o.orderTime,0,8) from o) ='"+month+"'";
为什么不行....有什么好的解决方法吗?
我将生成的hql语句copy到sql2008中测试时报下面的错误:
消息 512,级别 16,状态 1,第 1 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
//通过截取订单时间的年月来统计月订单数
String month = sdf.format(new Date());
String hql = "from OrderInfo o where (select substring(o.orderTime,0,8) from o) ='"+month+"'";
为什么不行....有什么好的解决方法吗?
我将生成的hql语句copy到sql2008中测试时报下面的错误:
消息 512,级别 16,状态 1,第 1 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
作者: adongshahua 发布时间: 2011-12-02
高手速度来啊...
在线等...
在线等...
作者: adongshahua 发布时间: 2011-12-02
楼主,你数据库那时间的那个字段是时间类型的吗?如果是的话,给你一个解决方案 :
你用 hibernate 的 createSQLQuery() 这个方法查询 ,支持 sql 语句
Select * From TableName Where DateDiff(mm, DateTimCol, GetDate()) = 0
其中 TableName 为表名 .DateTimCol 为表中时间 字段 . 用 DateDiff 函数 可用来决定两个日期之间所指定的时间间隔数目。 等于0 。 mm 表示月。 等于0 为当月
这条语句就可以实现
希望 能帮到你!
你用 hibernate 的 createSQLQuery() 这个方法查询 ,支持 sql 语句
Select * From TableName Where DateDiff(mm, DateTimCol, GetDate()) = 0
其中 TableName 为表名 .DateTimCol 为表中时间 字段 . 用 DateDiff 函数 可用来决定两个日期之间所指定的时间间隔数目。 等于0 。 mm 表示月。 等于0 为当月
这条语句就可以实现
希望 能帮到你!
作者: mgz521009 发布时间: 2011-12-02
根据substring(o.orderTime,0,8)截取的年月分组查询就能统计出月订单了。。。
作者: kouyiSC 发布时间: 2011-12-02
引用 2 楼 mgz521009 的回复:
楼主,你数据库那时间的那个字段是时间类型的吗?如果是的话,给你一个解决方案 :
你用 hibernate 的 createSQLQuery() 这个方法查询 ,支持 sql 语句
Select * From TableName Where DateDiff(mm, DateTimCol, GetDate()) = 0
其中 TableName 为表名 .DateTimCol 为表中……
楼主,你数据库那时间的那个字段是时间类型的吗?如果是的话,给你一个解决方案 :
你用 hibernate 的 createSQLQuery() 这个方法查询 ,支持 sql 语句
Select * From TableName Where DateDiff(mm, DateTimCol, GetDate()) = 0
其中 TableName 为表名 .DateTimCol 为表中……
同意
作者: wang7535067 发布时间: 2011-12-02
String month = sdf.format(new Date());
String sql= "select * from OrderInfo o where (select substring(o.orderTime,0,8) from o) ="+month;
正对于你这种问题建议用createSQLQuery()方法,因为hql在直接拼接的时候有时候会出现错误!毕竟sql跟hql是有区别的
所以建议用session.createSQLQuery(sql);用这个试试
String sql= "select * from OrderInfo o where (select substring(o.orderTime,0,8) from o) ="+month;
正对于你这种问题建议用createSQLQuery()方法,因为hql在直接拼接的时候有时候会出现错误!毕竟sql跟hql是有区别的
所以建议用session.createSQLQuery(sql);用这个试试
作者: oyxm0 发布时间: 2011-12-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28