嗨,我正在尝试根据开始和结束日期使用Hibernate从表中获取行数,但我得到的不是有效的月份错误
Session session = sessionFactory.getCurrentSession();
startDate = "13-02-02 00:00:00";
endDate = "17-02-02 00:00:00";
try{
String hql = "select Count(*) from mytable where PERIOD_START_DATETIME between '"
+ startDate + "' AND '" + endDate + "'";
Query query = session.createQuery(hql);
long count=(long) query.uniqueResult();
return count;
} finally{
session.close();
}
这是我的表格说明
Name NULL TYPE NAME NOT NULL VARCHAR2(255 CHAR) PERIOD_END_DATETIME NOT NULL TIMESTAMP(6) PERIOD_START_DATETIME NOT NULL TIMESTAMP(6) PROD_OFFER_TERM_TYPE_ID NOT NULL NUMBER(19)
确保在查询中实际传递日期值。可以使用to_date函数指定日期的格式,因为它在字符串中表示。
select Count(*)
from mytable
where PERIOD_START_DATETIME between to_date(startDate,'DD-MM-YYYY HH24:MI:SS') AND to_date(endDate,'DD-MM-YYYY HH24:MI:SS');
由于开始/结束时间在DB中SQLTIMESTAMP
s,您可以将一个Timestamp
对象传入查询,如下所示:
Session session = sessionFactory.getCurrentSession();
final DateFormat df = new SimpleDateFormat("yy-MM-dd");
// omitting the time part will set the time to midnight (00:00:00)
Timestamp start = new Timestamp(df.parse("13-02-02").getTime());
Timestamp end = new Timestamp(df.parse("17-02-02").getTime());
try {
String hql =
"select Count(*) from mytable where PERIOD_START_DATETIME between ? AND ?";
Query query = session.createQuery(hql)
.setTimestamp(0, start)
.setTimestamp(1, end);
long count = (long) query.uniqueResult();
return count;
} finally {
session.close();
}
使用字符串串联生成SQL查询通常是一个坏主意,因为
HQL支持绑定变量/预准备语句,因此这应该可以工作:
String hql = "select Count(*) from mytable where PERIOD_START_DATETIME between :startdate AND :enddate ";
Query query = session.createQuery(hql);
query.setParameter("startdate", startDate);
query.setParameter("enddate", endDate);
(其中startDate和endDate是实际的java.sql.Timestamp
值,而不是字符串)。
我有一个包含以下字段的表: 报告(表名)Rep_Date(日期)Rep_Time(日期) 更新15:58我现在可以执行以下查询: 但是,我需要在子句中再添加一条语句,将MaxDate的时间部分与rep_time:不起作用。
这是我的oracle sql查询。我正在用Python运行它。当我在Oracle SQL Developer中运行它时,它会给出结果,但每当我试图在pycharm中执行它时,就会出现以下错误: cx_oracle.databaseError:ORA-01843:不是有效月份 当我跑的时候 这在oracle sql developer中显示
我为PHP更改了OCI8版本,由于该查询不起作用: 我收到这个消息: 消息:oci_execute():ora-01843:不是有效月份 它与Toad一起用于Oracle11。你有什么解决办法吗? 谢谢:)
我正在websphere 7.0版本上运行一个应用程序,该应用程序是在我的QA环境中新设置的,并且低于oracle错误
我有一个在PL-SQL视图中使用的查询。该视图包含一个名为Jde_date的函数,该函数采用Julian格式的date参数并将其转换为Gregorian格式,它工作得很好。 查询如下: 但是当我发布报告时,我得到错误ORA-01843:不是一个有效的月份。 我该怎么解决?