【问题标题】:Insert Date field into DB将日期字段插入数据库
【发布时间】:2010-08-30 08:46:04
【问题描述】:

我的 jsp 中有一个名为“req_date”的文本框字段。用户从 JavaScript 日历中选择日期,格式为“DD-MON-YY”,例如。 “2010 年 8 月 29 日”。所以,现在我在尝试将其插入数据库时​​被卡住了。

我试过" String queryString = "INSERT INTO Charity (req_date) VALUES (?)",但它没有插入。我该如何解决这个问题。

req_date 是数据库中的日期类型。

请帮忙

【问题讨论】:

  • 您使用的是什么数据库?顺便说一句,您为什么使用直接 JDBC 调用而不是 ORM?

标签: java jsp


【解决方案1】:

日期格式取决于您使用的数据库。 供 Oracle 参考Date formats

所以您的查询应该如下所示:

String queryString = "INSERT INTO Charity (req_date) VALUES (to_date('29-aug-2010', 'dd-mon-yyyy'))"

这只是为了回答您的问题。但我更喜欢使用 PreparedStatement,正如其他答案中所建议的那样。

您使用 PreparedStatement 的代码应如下所示:(注意:我尚未测试此代码)

    String formatIn = "dd-MMM-yyyy";
    SimpleDateFormat sdfi = new SimpleDateFormat(formatIn);
    java.util.Date inDate = sdfi.parse("29-Aug-2010");

    java.sql.Date sqlDate = new java.sql.Date(inDate.getTime());

    PreparedStatement prest = con
            .prepareStatement("INSERT INTO Charity (req_date) VALUES (?)");
    prest.setDate(1, sqlDate);
    int row = prest.executeUpdate();

【讨论】:

  • 如何在我之前的陈述中做到这一点?
  • @maas 我已经使用 to_date() oracle 函数更新了您的查询。
  • 我还使用preparedStatement 添加了解决方案。请看一下
【解决方案2】:

使用PreparedStatement 及其setDate(..)。或者使用时间戳 (long)。

【讨论】:

    【解决方案3】:

    这取决于你的数据库,PostgreSQL 可以识别这种格式:

    SELECT CAST('29-aug-2010' AS date);
    

    结果:

    '2010-08-29'
    

    在大多数情况下,您最好使用 ISO 格式 yyyy-mm-dd。

    【讨论】:

    • 视情况而定,您可以按照 YoK 向您展示的那样在 SQL 中使用 TO_DATE() 或在您的 Java 代码中使用。
    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 2016-04-22
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多