【问题标题】:How do i add a Joda DateTime Object into my MSSQL database如何将 Joda DateTime 对象添加到我的 MSSQL 数据库中
【发布时间】:2013-12-09 12:12:49
【问题描述】:

所以我有一个带有 DateTime 类型的 DateObjectCreated 列的 mssql 数据库。它将接受到表中的值的格式为 2013-12-23 12:23:56.567。但是,我的 java 程序正在创建一个 joda DateTime 对象,其格式为 2013-12-23T 12:23:56.567Z。这不会插入我的数据库。我需要将“2013-12-23T 12:23:56.567Z”转换为 2013-12-23 12:23:56.567 或找到一种方法让我的数据库表接受“2013-12-23T 12:23: 56.567Z" 格式 对此问题的任何帮助将不胜感激 非常感谢 比利 控制器

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String formattedDate = formatter.format(date);//this gives me the string as i need it 
DateTime dt = new DateTime(formattedDate);//here it adds the 'T' and 'Z'

试过了

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String formattedDate = formatter.format(date);//this gives me the string as i need it 
Date dt = formatter.parse(formattedDate);//here it gives me the same as new Date()

【问题讨论】:

  • 你在使用 JPA 吗?普通的jdbc?你能显示一些代码吗?你试过什么?
  • 你不能从 JodaTime 获取以毫秒为单位的时间并创建一个时间戳以传递给 MySQL 吗?
  • 请查看更新后的问题。
  • 无需处理毫秒。见my answer。

标签: java sql-server datetime


【解决方案1】:
  1. DateFormat 格式化程序 = new SimpleDateFormat("yyyy-MM-dd"); 日期 myDate = formatter.parse(date);

2.enter link description here TO_DATE 函数可以在 Oracle/PLSQL 中使用。例如:

TO_DATE('2003/07/09', 'yyyy/mm/dd') 将返回 2003 年 7 月 9 日的日期值

TO_DATE('070903', 'MMDDYY') 将返回 2003 年 7 月 9 日的日期值

TO_DATE('20020315', 'yyyymmdd') 将返回 2002 年 3 月 15 日的日期值

【讨论】:

  • 嗨,很抱歉很痛苦,但我正在尝试通过 java 控制器类将一些值插入数据库。该表已经存在,并且在我插入值之前需要在控制器中完成转换。你能给我一个你可以用来从我的控制器中实现这一点的代码示例吗?非常感谢。比利
  • 很抱歉给您带来不便,我正在检查它
【解决方案2】:

您的 DB 列具有 DateTime 类型。您的日期的文本表示与持久化它无关。 无论您使用什么 API(JDBC、JPA、Hibernate),都会有类似“setDateTime(Date date)”的方法,允许您传入 java.util.Date 或 java.sql.Date 或 Java long .您可以使用 Joda DateTime 对象的毫秒值来创建 API 所需的任何内容。

【讨论】:

    【解决方案3】:

    你工作太辛苦了。

    1. 将您的Joda-Time DateTime 对象转换为java.util.Date。只需调用toDate() 方法即可。
    2. 将 Date 实例传递给您的框架或 SQL。

    answer by Ralf 在第一部分是正确的,但最后是错误的,因为您不需要处理毫秒。 Joda-Time 知道如何转换为 java.util.Date。

    org.joda.time.DateTime now = new org.joda.time.DateTime();
    java.util.Date nowAsJavaUtilDate = now.toDate();
    

    顺便说一句,java.sql.Date 类只是 java.util.Date 的一个非常薄的子类。所以不要让它丢了你。


    在未来,这将变得更加容易。 Java 8 在 java.time.* 包中引入了新的 JSR 310 类。这些类取代了 java.util.Date/Calendar 的混乱。它们受到 Joda-Time 的启发,但完全重新设计。由于它们是 Java 的内置部分,预计 JDBC 和相关框架会更新以直接处理这些新类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      相关资源
      最近更新 更多