如何将日月日期时间转换为oracle日期?格式为2017年5月3日00:00:00

时间:2017-05-04 11:19:55

标签: java date

如何转换,日月日期HH:mm:ss时间戳到oracle日期?

格式为:2017年5月3日星期三00:00:00 IST 2017.

我以上面的格式获取日期和时间,我需要这种格式将其存储在DB(Oracle)中,因为在后面我必须获取日期并将其转换为用于quartz scheduler的corn表达式。

3 个答案:

答案 0 :(得分:0)

假设问题是转换为java.sql.Date对象,以下代码显示了如何解析给定的输入。

public static void main(String[] args)
{
    final String inp = "Wed May 03 00:00:00 IST 2017";

    final String parseFmt = "E MMM dd HH:mm:ss z yyyy";

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern(parseFmt);

    TemporalAccessor ta = dtf.parse(inp);

    ZonedDateTime zdt = ZonedDateTime.from(ta);



    java.sql.Date sqlDate = 
            new java.sql.Date(zdt.toInstant().toEpochMilli());

    System.out.println(inp);
    System.out.println(zdt);
    System.out.println(zdt.toInstant());
    System.out.println(sqlDate);
}

输出:

Wed May 03 00:00:00 IST 2017
2017-05-03T00:00+03:00[Asia/Jerusalem]
2017-05-02T21:00:00Z
2017-05-02

答案 1 :(得分:0)

您可以按照以下方式执行

  1. 使用SimpleDateFormat解析并获取java.util.Date对象
  2. 现在您可以使用java.sql.Timestamp(date.getTime())将java.util.Date转换为java.sql.Timestamp
  3. 希望这会有所帮助

答案 2 :(得分:0)

使用对象,而不是字符串

  

我需要这种格式将其存储在DB(Oracle)

不,你没有。

使用日期时间值时不需要字符串。对于日期时间值,请使用日期时间对象。

使用java.time

对于日期时间对象,仅使用java.time类。避免使用较旧的类,如java.util.Date,java.sql.Date和java.sql.Timestamp,因为它们令人困惑,麻烦且设计不佳。

避免使用3-4个字母伪时区,例如IST。它们不是实时区域,不是标准化的,并且不是唯一的(!)。 “IST”你的意思是“印度标准时间”还是“爱尔兰标准时间”?使用以continent/region格式命名的real time zones,例如Asia/KolkataEurope/Dublin

LocalDate ld = LocalDate.of( 2017 , Month.MAY , 3 ) ;
ZoneId z = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdt = ld.atStartOfDay( z ) ;

JDBC

JDBC的目的是在数据库的数据类型和Java的数据类型之间进行调解。

如果JDBC驱动程序符合JDBC 4.2或更高版本,则可以直接传递/获取这些java.time对象。使用PreparedStatement::setObjectResultSet::getObject

相关问题