【问题标题】:Converting java date to Sql timestamp将java日期转换为Sql时间戳
【发布时间】:2014-05-16 10:05:56
【问题描述】:

我在将java.util.Date 转换为 java.sql.Timestamp 后尝试插入它,我正在使用以下 sn-p:

java.util.Date utilDate = new java.util.Date();
java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime());

但这给了我sq 2014-04-04 13:30:17.533

有没有什么方法可以在没有毫秒的情况下获得输出?

【问题讨论】:

  • 嗯,你目前正在创建一个java.sql.Timestamp - 你想要那个,还是java.sql.Date?它们是不同的类型......
  • 使用日历,将毫秒设置为 0,从日历的时间创建您的时间戳。
  • @Reddy:是的,但我从帖子的第一行开始:“我想将 java.util.Date 转换为 java.sql.date” - 基本上要求完全不清楚那一刻。
  • @Shitu:对,所以你根本不想要java.sql.Date。请编辑您的帖子。
  • @Reddy:您似乎仍然错过了我的观点:原始帖子不清楚是否需要时间部分,因为它开始谈论java.sql.Date,然后使用@987654329 @。我很清楚这两种类型,但它们并不相同,而且我们没有得到实际要求……几分钟前的评论更清楚了——但这些信息必须来自 OP。 ..

标签: java sql datetime sqldatetime


【解决方案1】:

看看SimpleDateFormat

java.util.Date utilDate = new java.util.Date();
java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime());  

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
System.out.println(sdf.format(sq));

【讨论】:

    【解决方案2】:

    问题在于您打印时间数据的方式

    java.util.Date utilDate = new java.util.Date();
    java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime());
    System.out.println(sa); //this will print the milliseconds as the toString() has been written in that format
    
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println(sdf.format(timestamp)); //this will print without ms
    

    【讨论】:

    • OP 有兴趣将数据存储到数据库中——这根本不需要文本转换。基本上,这个问题还不清楚 - OP 是不想 store 毫秒还是不想 render 它们并不明显。
    【解决方案3】:
    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);
    

    这给了我以下输出:

     utilDate:Fri Apr 04 12:07:37 MSK 2014
     sqlDate:2014-04-04
    

    【讨论】:

      【解决方案4】:

      我建议使用 apache.commons 库中的 DateUtils。

      long millis = DateUtils.truncate(utilDate, Calendar.MILLISECOND).getTime();
      java.sql.Timestamp sq = new java.sql.Timestamp(millis );
      

      编辑:将Calendar.MILISECOND 固定为Calendar.MILLISECOND

      【讨论】:

      • 请将Calender.MILISECONDS改为Calendar.MILLISECOND,这是正确的属性
      【解决方案5】:

      您可以使用Calendar 切断毫秒数:

      java.util.Date utilDate = new java.util.Date();
      Calendar cal = Calendar.getInstance();
      cal.setTime(utilDate);
      cal.set(Calendar.MILLISECOND, 0);
      System.out.println(new java.sql.Timestamp(utilDate.getTime()));
      System.out.println(new java.sql.Timestamp(cal.getTimeInMillis()));
      

      输出:

      2014-04-04 10:10:17.78
      2014-04-04 10:10:17.0
      

      【讨论】:

        猜你喜欢
        • 2014-12-03
        • 1970-01-01
        • 2017-12-12
        • 2017-04-06
        • 1970-01-01
        • 2016-11-26
        • 2016-06-07
        • 2018-06-26
        • 1970-01-01
        相关资源
        最近更新 更多