例如,我有一个表格如下:
CREATE TABLE MESSAGES(
MESSAGE_ID INTEGER PRIMARY KEY,
SENT TIMESTAMP NOT NULL
);
在我的 java 类中,我message_id作为整数并作为日历发送。
我的查询是这样的:
插入时(仅显示日期部分(:
String sql1="insert into messages (message_id,sent) values (?,?)";
Calendar cal=Calendar.getInstance();
ps1.setDate(2, new java.sql.Date(cal.getTimeInMillis()));
插入表视图后为:
message_id已发送
1 | 2016-12-22 00:00:00
2 | 2016-6-22 00:00:00
检索时(仅显示日期部分(:
String sql="select message_id, sent from messages";
Messages msg=new Messages();
Calendar cal=Calendar.getInstance();
Date d=rs.getDate("sent");
String pattern = "yyyy-MM-dd hh:mm:ss a";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String conDate=simpleDateFormat.format(d);
我得到了日期,但时间始终是上午 12:00:00。我想以这样的格式显示获取它:
"消息发送于 2016-12-3 19:30:00 PM">
我做错了什么吗?任何善意的帮助都是值得赞赏的... :)
Date 在 JDBC 中仅表示"天"。如果您也想有时间,请使用时间戳。
编辑:我说的是:
String sql1="insert into messages (message_id,sent) values (?,?)";
ps1.setTimestamp(2, java.sql.TimeStamp.from(Instant.now()));
和
String sql="select message_id, sent from messages";
Messages msg=new Messages();
Calendar cal=Calendar.getInstance();
java.util.Date d=rs.getTimestamp("sent");
String pattern = "yyyy-MM-dd hh:mm:ss a";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String conDate=simpleDateFormat.format(d);
据我所知,这些都没有被弃用,如果是这样,我没有更现代的解决方案。仍在等待JDBC支持新的时间API...getDate/new java.sql.Date将缩短时间,这不是你想要的。