如何将日、月、日HH:mm:ss时间戳转换为oracle日期?
格式为: Wed May 03 00:00:00 IST 2017。
我得到了上述格式的日期和时间,我需要这种格式来存储在数据库(Oracle),因为在后面我必须获取日期,并将其转换为石英调度器玉米表达式。
发布于 2017-05-04 19:35:01
假设问题是转换为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
发布于 2017-05-04 19:40:28
您可以执行以下操作
将java.util.Date转换为java.sql.Timestamp
希望这能有所帮助
发布于 2017-05-05 02:09:38
使用对象,而不是字符串
Oracle我需要此格式将其存储在数据库中(
)
不,你不知道。
使用日期-时间值时不需要字符串。对于日期-时间值,请使用日期-时间对象。
使用java.time
对于date-time对象,仅使用java.time类。避免使用较旧的类,如java.util.Date、java.sql.Date和java.sql.Timestamp,因为它们令人困惑、麻烦且设计不佳。
避免使用3-4个字母的伪时区,例如IST
。它们不是实时时区,不是标准化的,也不是唯一的(!)。你说的“IST”是指“印度标准时间”还是“爱尔兰标准时间”?使用real time zones,命名格式为continent/region
,如Asia/Kolkata
或Europe/Dublin
。
LocalDate ld = LocalDate.of( 2017 , Month.MAY , 3 ) ;
ZoneId z = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdt = ld.atStartOfDay( z ) ;
JDBC
JDBC的目的是在数据库的数据类型和Java的数据类型之间进行协调。
如果您的JDBC驱动程序符合JDBC4.2或更高版本,则可以直接传递/获取这些java.time对象。使用PreparedStatement::setObject
和ResultSet::getObject
。
https://stackoverflow.com/questions/43781444
复制相似问题