【问题标题】:How to convert Calendar to java.sql.Date in Java?如何在 Java 中将日历转换为 java.sql.Date?
【发布时间】:2012-02-25 03:12:15
【问题描述】:
Calendar cal;
String sql = "INSERT INTO ttable (dt) values (?);"
//dt is a dateTime field in ttable

PreparedStatement stmt = connection.prepareStatement(sql);

stmt = setDate(1,cal); //not working

stmt.execute();
stmt.close();

我想将 cal 转换为 Date 类型以插入到表格中。

【问题讨论】:

  • 大概你想要java.sql.Date而不是java.util.Date

标签: java sql calendar


【解决方案1】:
Calendar cal = Calendar.getInstance(); //This to obtain today's date in our Calendar var.

java.sql.Date date = new Date (cal.getTimeInMillis());

【讨论】:

    【解决方案2】:

    有一个getTime() 方法(不确定为什么不叫getDate)。

    编辑:刚刚意识到您需要一个 java.sql.Date。使用cal.getTimeInMillis() 的答案之一就是您所需要的。

    【讨论】:

    • 它是getTime(),因为它返回准确的时间,如Wed Dec 05 10:57:35 GMT+03:30 2018,而不仅仅是日期。
    • getTime() 返回 java.util.Date 而不是 java.sql.Date。问题是获取 java.sql.Date。
    【解决方案3】:

    stmt.setDate(1, new java.sql.Date(cal.getTime().getTime()));

    【讨论】:

      【解决方案4】:

      你试过cal.getTime()吗?这将获取日期表示。

      您可能还想查看 javadoc。

      【讨论】:

      • 是的,但我一直需要使用(日期)进行投射。
      • 那是因为你需要一个 java.sql.Date(就像 James Jithin 说的那样),而 Calendar.getTime() 为你提供了一个 java.util.Date。
      【解决方案5】:

      这是将Calendar 值转换为Date 实例的简单方法。

      Calendar C = new GregorianCalendar(1993,9,21);
      
      Date DD = C.getTime();
      
      System.out.println(DD);
      

      【讨论】:

      • 专问java.sql.Date的问题。有几个像这样的答案,都假设 java.util.Date。当然,有些人会说将它们命名为相同的东西是一个愚蠢的想法。
      【解决方案6】:

      我发现这段代码有效:

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");    
      Calendar calendar = new GregorianCalendar(2013,0,31);
      System.out.println(sdf.format(calendar.getTime()));  
      

      您可以在本教程中找到其余内容:
      http://www.mkyong.com/java/java-date-and-calendar-examples/

      【讨论】:

        【解决方案7】:

        转换很容易,设置日期和时间有点棘手。这是一个例子:

        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2000);
        cal.set(Calendar.MONTH, 0);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        cal.set(Calendar.HOUR_OF_DAY, 1);
        cal.set(Calendar.MINUTE, 1);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis()));
        

        【讨论】:

          【解决方案8】:

          使用stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis()))

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-29
            • 2017-07-13
            • 2013-01-27
            • 2016-02-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多