如何接收输入作为在Java为yyyymmddhhmm格式?(How to receive input

2019-07-05 05:23发布

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:不是有效的月份。

任何人都可以协助解决上述错误?

Answer 1:

在java中,得到一个格式化的日期,你会做以下几点:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
String sdf.format(myDate);

有很多选项负荷的SimpleDateFormat 。 我重视你的JavaDoc。



Answer 2:

从字符串转换到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')>?”



Answer 3:

我已经解决了上述问题。

余转换的日期为“YYYYMMDD”格式,并转换的时间在“HHMM”格式,将其存储为2个不同的字符串。



文章来源: How to receive input as yyyyMMddHHmm format in java?
标签: java jdbc