如何使用PostgreSQL DB插入当前日期和时间并以特定格式检索它?

时间:2017-04-04 15:25:24

标签: java postgresql date time

例如,我有一个表格如下:

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发送”

我做错了吗?任何帮助表示赞赏...... :)

1 个答案:

答案 0 :(得分:1)

日期仅表示日期'在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会削减时间,而这不是你想要的。