2016-04-29 79 views
0

我需要您的帮助才能获取正确的格式,以插入从数据库的两个不同字符串变量中检索的日期和时间信息并插入它们(日期和时间)转换为另一个表中的日期和时间列。如何将两个字符串变量转换为日期和时间戳列以插入到数据库中

String agreement_date = ""; 
agreement_date=rs.getString("agr_date"); //format DD-MON-YYYY ex. 22-May-2014 

,时间从数据库中检索:

String frm_time = rs.getString("FRM_TIME"); //format HH:MI ex.7:20 

所以现在我需要两列组合成一个变量,在数据库中插入他们的日期从协议日期列是检索列名为transaction_dt_time,其类型为dateTime(格式为dd/MM/YYYY HH:MI:SS AM/PM),那么我该怎么做?

回答

0

我知道您正在从数据库中获取结果集中的值。一般日期和时间根据数据类型存储在数据库中。建议使用rs.getDate()和rs.getTime()来获取这些值而不是String数据类型。

这里是一个示例代码转换

import java.sql.Timestamp; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class DateDemo { 

    public static void main(String[] args) { 
     try{ 
      String date = "22-May-2015"; 
      String time = "7:20"; 
      String yourString = date+ " "+ time; 
      SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm"); 
      Date parsedDate = dateFormat.parse(yourString); 
      Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime()); 
      System.out.println(timestamp); 
     }catch(Exception e){ 
      e.printStackTrace(); 
      //this generic but you can control another types of exception 
      // look the origin of excption 
     } 
    } 
    } 

希望这有助于!

2

您可以连接这些字符串到日期时间字符串和使用的SimpleDateFormat例如

SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy HH:mm"); 
Date dateToInsert = format.parse(concatenatedDate); 
0

使用的SimpleDateFormat()的,是你的时间24小时的时间转换成日期?我们如何知道它是AM还是PM?

SimpleDateFormat sdfTime = new SimpleDateFormat("HH:MI:SS"); //AM/PM? 
String strTime = sdfTime.format(frm_time); 

final_date = agreement_date.replaceAll("-","/"); 
String FinalDate = final_date + strTime; 
0

您可以使用JPA 2.1及其AttributeConverter接口

0

java.time

其他的答案使用传统的日期时间类,现在建到Java 8和后来的java.time框架所取代。

首先解析日期部分。

DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("mm-DD-yyyy"); 
LocalDate localDate = LocalDate.parse("22-May-2014" , dateFormatter); 

二,解析时间部分。

DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("h:m"); 
LocalTime localTime = LocalTime.parse("7:20" , dateFormatter); 

三,确定这个值有什么意义的时区。这是蒙特利尔时间,巴黎时间还是加尔各答时间?

ZoneId zoneId = ZoneId.of("America/Montreal"); 

组合成ZonedDateTime

ZonedDateTime zdt = ZonedDateTime.of(localDate , localTime , zoneId); 

您可以到这个ZonedDateTime通过setObject方法上PreparedStatement与JDBC 4.2兼容的驱动传递到你的数据库。但如果不是,则转换为旧的java.sql.Timestamp类型。那个老班级有一个方便转换的新方法,它需要一个Instant对象。 Instant是UTC时间轴上的一个时刻,分辨率为纳秒。我们可以从我们的ZonedDateTime中提取Instant

Instant instant = zdt.toInstant(); 
java.sql.Timestamp ts = java.sql.Timestamp.from(instant); 

在您的PreparedStatement,请致电setTimestamp

相关问题