Java jdbc如何插入当前日期但格式化为数据库

时间:2015-08-21 05:36:32

标签: java postgresql jdbc

我使用postgres 9.4(Date Column)作为我的数据库,想知道是否可以使用以下格式的JDBC preparedstatement将格式化的日期插入数据库(我一直在搜索,找不到任何东西) ): 2015年8月21日。这是我的代码

  Calendar calendar = Calendar.getInstance();

    java.util.Date today = calendar.getTime();
    SimpleDateFormat formatter= new SimpleDateFormat("MM-dd-yyyy");
    java.util.Date mydate= formatter.parse(today.toString());
    preparedStatement.setDate(2,new java.sql.Date(mydate.getTime()));

不用说,这不起作用,我得到这个错误

无法解释日期:“2015年8月21日星期五01:17:59” 再次,我想把它变成2015年8月21日,我可以成功执行代码,如果我只是这样插入

    Calendar calendar = Calendar.getInstance();
    java.util.Date mydate = calendar.getTime();
    preparedStatement.setDate(2,new java.sql.Date(mydate.getTime()));

但插入时间为2015年8月21日,我想的可能只是将其保存为8-21-2015格式,然后只解析所有这些格式,但更喜欢第一种选择。

3 个答案:

答案 0 :(得分:0)

您的日期模式错误:必须是:

$.ajax({
    'type': 'GET',
    'url': 'http://api.nytimes.com/svc/search/v2/articlesearch',
    'dataType': 'jsonp',
    'callback': '',
    data: {
        'q': seaString,
        'response-format': "jsonp",
        'api-key': 'xxxxxxxxxxxxxxxx',
        'callback': 'svc_search_v2_articlesearch'
    },
    'success': function(data, textStats, XMLHttpRequest) {
        // passed function object for data processing
        console.log(data);
    }
});

有关mor信息,请参阅javadoc of SimpleDateFormat

答案 1 :(得分:0)

日期列中的值本身没有格式化,只是一个日期,如果要在将数据从数据库中读回时格式化日期,只需使用{{3}之一}。

E.g。

select to_char(your_date_column, 'MON-DD-YYYY') from yourtable

答案 2 :(得分:0)

不知道为什么要转换为字符串并返回,但today.toString() 生成与MM-dd-yyyy匹配的文字字符串,因此{ {1}}会失败。

如果意图是删除时间部分,为了获得"今天",您可以:

formatter.parse(today.toString())

或者,使用Java 8:

Calendar cal = Calendar.getInstance();
int year  = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day   = cal.get(Calendar.DAY_OF_MONTH);
cal.clear();
cal.set(year, month, day);
java.sql.Date today = new java.sql.Date(cal.getTimeInMillis());

日期格式

为了您的愿望,插入一个"格式化的日期",然后您感到困惑。数据库中的日期列没有格式,它只存储日期值。

查询日期列时,您将获得日期值,可以使用java.sql.Date today = java.sql.Date.valueOf(LocalDate.now()); 方法在Java中检索该日期值。

在工具中查询日期时,该工具会将日期转换为文本值以供显示。某些工具可以让您控制日期格式。

如果您想要控制日期格式,可以使用DBMS特定的格式化功能将日期转换为查询中的文本列。