SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
java.util.Date parsedDate = sdf.parse("201212130900");
java.sql.Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
try
{
PreparedStatement pstmt = connection.prepareStatement(
"select count(*) as counter from table1 where table_key > ?");
pstmt.setTimestamp(1,new java.sql.Timestamp(timestamp.getTime()));
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt( 1 ));
}
connection.close();
}
catch(Exception g){
System.err.println(g.getMessage());
}
在输出我收到一个错误
ORA-01843:不是有效的月份。
任何人都可以协助解决上述错误?
在java中,得到一个格式化的日期,你会做以下几点:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
String sdf.format(myDate);
有很多选项负荷的SimpleDateFormat 。 我重视你的JavaDoc。
从字符串转换到timestap就可以了。(我测试和工程)。
您的问题可能是在时区或东西。 尝试使用这种方法来代替,
setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
例:
setTimestamp(1, timestamp , Calendar.getInstance(TimeZone.getTimeZone("UTC")))
更新:(table1.table_key为CHAR(24))
你应该给你从Java日期字符串,假设key_value的格式为“为yyyymmddhhmm” ......(原因很明显其他格式无效)
另一种选择是在你的查询转换key_value到TIMESTAMP
尝试:(我假设您正在使用Oracle数据库的工作,和我做一些搜索)
1)做了“投”到时间戳
“SELECT COUNT(*)从表1柜台里时间戳(table_key)>?”
2)使用http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions193.htm 。 我不知道你是否可以做这样的事情:
“SELECT COUNT(*),如从表1计数器,其中TO_TIMESTAMP(table_key, 'YYYYMMDDHHMMHH24MI')>?”
我已经解决了上述问题。
余转换的日期为“YYYYMMDD”格式,并转换的时间在“HHMM”格式,将其存储为2个不同的字符串。