如何将Joda DateTime对象添加到我的MSSQL数据库中

时间:2013-12-09 12:12:50

标签: java sql-server datetime

所以我有一个带有DateTime类型的DateObjectCreated列的mssql数据库。它将接受到表中的值的格式为2013-12-23 12:23:56.567。但是,我的java程序正在创建一个格式为2013-12-23T 12:23:56.567Z的joda DateTime对象。这不会插入我的数据库。我需要将“2013-12-23T 12:23:56.567Z”转换为2013-12-23 12:23:56.567或者找一种方法让我的db表接受“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()

3 个答案:

答案 0 :(得分:0)

  1. DateFormat formatter = new SimpleDateFormat(“yyyy-MM-dd”); 日期myDate = formatter.parse(date);
  2. 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日的日期值

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你的工作方式太难了。

  1. 将您的Joda-Time DateTime对象转换为java.util.Date。只需致电toDate()方法。
  2. 将Date实例传递给您的框架或SQL。
  3. 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和相关框架以直接处理这些新类型。