HQL to_date 在oracle中 ORA 01810 格式代码出现两次

HQL to_date 在 Oracle 中的使用技巧
本文介绍在Hibernate HQL查询中使用to_date函数格式化日期时的注意事项,尤其是在Oracle数据库环境下如何正确设置日期格式以避免ORA-01810错误的发生,并提供了解决方案。

Hibernate HQL to_date 在oracle中 ORA 01810 格式代码出现两次

 

一、Hql中使用to_date()时格式化日期需要注意格式码

 

如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;


二、另要以24小时的形式显示出来要用HH24


select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显示月份

根据上述 String hql = "from " + OrderDetail.class.getName() + " orderDetail where orderDetail.delFlag= 0 and orderDetail.orderNo != 'New' "; String hqlCenter = " and exists (from " + Order.class.getName() + " orders where orders.delFlag= 0 and orders.releaseStatus = 'Close' " + " and orderDetail.orderNo = orders.orderNo and orderDetail.createdByCompany = orders.createdByCompany"; String hqlEnd = ") order by " + "(select o.createdDate from " + Order.class.getName() + " o where o.orderNo = orderDetail.orderNo " + " and o.createdByCompany = orderDetail.createdByCompany " + " and o.delFlag = 0 " + " and o.releaseStatus = 'Close') desc, " + "length(orderDetail.itemIndex) asc, " + "orderDetail.itemIndex asc";Hibernate: select orderdetai0_.ID as ID, orderdetai0_.UUID as UUID, orderdetai0_.ORDER_NO as ORDER_NO, orderdetai0_.ORDER_ITEM_INDEX as ORDER_IT4_, orderdetai0_.MATERIAL as MATERIAL, orderdetai0_.ORDER_QTY as ORDER_QTY, orderdetai0_.SALES_UNIT as SALES_UNIT, orderdetai0_.DESCRIPTION as DESCRIPT8_, orderdetai0_.EACH_RATE as EACH_RATE, orderdetai0_.CUSTOMER_MATERIAL_NO as CUSTOME10_, orderdetai0_.ITEM_CATEGORY as ITEM_CA11_, orderdetai0_.PLANT as PLANT, orderdetai0_.PRICE as PRICE, orderdetai0_.CURRENCY as CURRENCY, orderdetai0_.PER as PER, orderdetai0_.SHIP_TO as SHIP_TO, orderdetai0_.BILL_TO as BILL_TO, orderdetai0_.PAYER_TO as PAYER_TO, orderdetai0_.CUST_REQUIRE_DATE as CUST_RE19_, orderdetai0_.SHIP_CODE as SHIP_CODE, orderdetai0_.CONDITION_TYPE as CONDITI21_, orderdetai0_.PO_NO as PO_NO, orderdetai0_.PO_ITEM as PO_ITEM, orderdetai0_.SHIP_TO_PO_NO as SHIP_TO24_, orderdetai0_.SHIP_TO_PO_ITEM as SHIP_TO25_, orderdetai0_.PRODUCTION_SITUATION as PRODUCT26_, orderdetai0_.SALES_USAGE_CATEGORY as SALES_U27_, orderdetai0_.INCO_TERMS1 as INCO_TE28_, orderdetai0_.INCO_TERMS2 as INCO_TE29_, orderdetai0_.PAYMENT_TERM as PAYMENT30_, orderdetai0_.TAX_CLASSIFFC as TAX_CLA31_, orderdetai0_.TAX_RATE as TAX_RATE, orderdetai0_.ITEM_PO_DATE as ITEM_PO33_, orderdetai0_.ITEM_NET_VALUE as ITEM_NE34_, orderdetai0_.ITEM_NOTE as ITEM_NOTE, orderdetai0_.REMARK as REMARK, orderdetai0_.SOLD_TO as SOLD_TO, orderdetai0_.REFERENCE_DOCUMENT_NO as REFEREN38_, orderdetai0_.CLOSE_DATE as CLOSE_DATE, orderdetai0_.ORDER_TYPE as ORDER_TYPE, orderdetai0_.REFER_ITEM_NO as REFER_I41_, orderdetai0_.REFER_NO as REFER_NO, orderdetai0_.REJECT_FOR_REASON as REJECT_43_, orderdetai0_.SAP_DESCRIPTION as SAP_DES44_, orderdetai0_.SHIPPING_QTY as SHIPPIN45_, orderdetai0_.OLD_SHIPPING_QTY as OLD_SHI46_, orderdetai0_.BASE_UNIT as BASE_UNIT, orderdetai0_.GROSS_DIE as GROSS_DIE, orderdetai0_.DEL_FLAG as DEL_FLAG, orderdetai0_.CREATED_BY_OA_ID as CREATED50_, orderdetai0_.UPDATED_BY_OA_ID as UPDATED51_, orderdetai0_.CREATED_TIME as CREATED52_, orderdetai0_.UPDATED_TIME as UPDATED53_, orderdetai0_.CREATED_BY_COMPANY as CREATED54_, orderdetai0_.CREATED_BY_FAB as CREATED55_, orderdetai0_.CREATED_BY_WORKCODE as CREATED56_, orderdetai0_.UPDATED_BY_WORKCODE as UPDATED57_, orderdetai0_.FOUNDARY_FAB as FOUNDAR58_, orderdetai0_.SHIP_FROM_FAB as SHIP_FR59_, orderdetai0_.CUST_PO_ITEM as CUST_PO60_, orderdetai0_.PART_NO as PART_NO, orderdetai0_.PAGE_DELIVERY_QTY as PAGE_DE62_, orderdetai0_.LABEL_FIELD_1 as LABEL_F63_, orderdetai0_.LABEL_FIELD_2 as LABEL_F64_ from CERP_OMS_ORDER_DETAIL orderdetai0_ where (orderdetai0_.DEL_FLAG=0 )and(orderdetai0_.ORDER_NO!='New' )and(orderdetai0_.CREATED_BY_COMPANY=? )and(exists(select order1_.ID from CERP_OMS_ORDER order1_ where (order1_.DEL_FLAG=0 )and(order1_.RELEASE_STATUS='Close' )and(orderdetai0_.ORDER_NO=order1_.ORDER_NO )and(orderdetai0_.CREATED_BY_COMPANY=order1_.CREATED_BY_COMPANY ))) order by (select o.createdDate from com.smec.apps.oms.orderContract.domain.Order o where o.orderNo=orderdetai0_.ORDER_NO and o.createdByCompany=orderdetai0_.CREATED_BY_COMPANY and o.delFlag=0 and o.releaseStatus='Close')desc , length(orderdetai0_.ORDER_ITEM_INDEX)asc , orderdetai0_.ORDER_ITEM_INDEX asc 10-20 12:57:38.362 WARN [JDBCExceptionReporter.java:57] SQL Error: 907, SQLState: 42000 10-20 12:57:38.362 ERROR [JDBCExceptionReporter.java:58] ORA-00907: 缺失右括号 10-20 12:57:38.363 WARN [JDBCExceptionReporter.java:57] SQL Error: 907, SQLState: 42000 10-20 12:57:38.363 ERROR [JDBCExceptionReporter.java:58] ORA-00907: 缺失右括号 10-20 12:57:38.364 ERROR [SearchOrderAction.java:87] Hibernate operation: Could not execute query; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00907: 缺失右括号 10-20 12:57:38.366 WARN [DefaultActionInvocation.java:265] No result defined for action com.smec.apps.oms.orderContract.action.SearchOrderAction and result null
最新发布
10-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值