【问题标题】:java.sql.Date formattingjava.sql.日期格式
【发布时间】:2013-06-14 07:10:24
【问题描述】:
public static void main(String[] args) {
    java.util.Date utilDate = new java.util.Date();
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    System.out.println("utilDate:" + utilDate);
    System.out.println("sqlDate:" + sqlDate);
 }

我使用这个代码部分并输出如下:

2013/06/14 12:06:11
2013-06-14

我想要包含日期和时间数据的输出。方法参数需要java.sql.Date格式。这就是为什么我必须转换或更改sqlDate 的格式。我该如何解决?

注意

PreparedStatement insertStmt=null;
insertStmt.setDate(parIndex, java.sql.Date);

这就是我想要 java.sql.Date 格式的原因

【问题讨论】:

  • 试试DateFormat.getDateTimeFormat().format(sqlDate),看看你会得到什么
  • 这不应该是您的代码的输出。 java.util.Date.toString() 以不同的方式格式化日期。
  • 您已经有一个Date,可以使用SimpleDateFormat 进行格式化,您可以从中构建您的SQL 日期;出于好奇,您为什么还要格式化您的 SQL 日期?不信任new java.sql.Date()
  • java.sql.Date(long) 构造函数将时间组件设置为零 GMT。将其格式化为java.util.Date 会产生误导。见docs.oracle.com/javase/7/docs/api/java/sql/Date.html#Date(long)
  • 您需要了解这两种数据类型的基础知识。请参阅:java.util.Date vs java.sql.Date

标签: java date formatting


【解决方案1】:

java.sql.Date 扩展了java.util.Date,因此它具有相同的信息,但由于覆盖了toString() 方法,因此显示方式不同。

如果你这样做,你会发现它是一样的

System.out.println(new java.util.Date(sqlDate.getTime()));

建议使用DateFormatSimpleDateFormat显示数据,见cmets。

【讨论】:

  • +1,很好的答案!这意味着您可以使用SimpleDateFormat ;)
【解决方案2】:

使用时间戳

    Date updated_date=new Date();
    Timestamp timestamp = new Timestamp(updated_date.getTime());
    updated_date = timestamp;

并确保数据库中的数据类型应为TimestampDatetime

【讨论】:

    【解决方案3】:
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    
    /**
     * java.util.date to java.sql.date
     */
    public class DatesConversion {
    
        public static void main(String[] args) {
            java.util.Date uDate = new java.util.Date();
            System.out.println("Time in java.util.Date is : " + uDate);
            java.sql.Date sDate = convertUtilToSql(uDate);
            System.out.println("Time in java.sql.Date is : " + sDate);
            DateFormat df = new SimpleDateFormat("dd/MM/YYYY - hh:mm:ss");
            System.out.println("Using a dateFormat date is : " + df.format(uDate));
        }
    
        private static java.sql.Date convertUtilToSql(java.util.Date uDate) {
            java.sql.Date sDate = new java.sql.Date(uDate.getTime());
            return sDate;
        }
    }
    

    使用这个

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-03
      • 2017-12-17
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      相关资源
      最近更新 更多