Java将日期转换为sql时间戳

标签 java sql datetime

我正在尝试转换从 csv 文件中提取的日期(字符串),将其转换为 sql 时间戳并使用准备好的语句上传。我拥有的是:

String test = "8/10/2014 16:59";

DateFormat fromFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm");
fromFormat.setLenient(false);
DateFormat toFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSSSS");
toFormat.setLenient(false);
Date date2 = null;
try {
    date2 = toFormat.parse(test);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

//java.sql.Timestamp ts2 = java.sql.Timestamp.valueOf(date2);
//java.sql.Timestamp sqlDate2 = new java.sql.Timestamp(timestamp); 
//sql_statement.setTimestamp(1, ts2);

如您所见,我的代码很乱,因为我正在尝试解决这个问题。我总是在 eclipse 中遇到错误:

java.text.ParseException: Unparseable date: "8/10/2014 16:59"
at java.text.DateFormat.parse(DateFormat.java:357)
at      com.syntronic.client.thread.ORCThreadTejasInv.uploadOracleDBOptical(ORCThreadTejasInv.java:555)
at com.syntronic.client.thread.ORCThreadTejasInv.connectOracleDB(ORCThreadTejasInv.java:170)
at com.syntronic.client.thread.ORCThreadTejasInv.retrieveOracleTejas(ORCThreadTejasInv.java:125)
at com.syntronic.client.thread.ORCThreadTejasInv.run(ORCThreadTejasInv.java:84)
at java.lang.Thread.run(Thread.java:745)

我什至尝试使用:

SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" );
String yourformattedDate = sdf.format(test);

差异错误出现"

Exception in thread "Thread-6" java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(DateFormat.java:301)
at java.text.Format.format(Format.java:157)
at com.syntronic.client.thread.ORCThreadTejasInv.uploadOracleDBOptical(ORCThreadTejasInv.java:562)
at com.syntronic.client.thread.ORCThreadTejasInv.connectOracleDB(ORCThreadTejasInv.java:170)
at com.syntronic.client.thread.ORCThreadTejasInv.retrieveOracleTejas(ORCThreadTejasInv.java:125)
at com.syntronic.client.thread.ORCThreadTejasInv.run(ORCThreadTejasInv.java:84)
at java.lang.Thread.run(Thread.java:745)

任何人都可以帮助解释为什么日期无法解析?以及如何将其转换为正确的 sql 时间戳?谢谢

最佳答案

您的fromFormat 格式说明符是

dd/MM/yyyy hh:mm

但应该是

dd/MM/yyyy HH:mm

并将 toFormat 更改为 yyyy-MM-dd HH:mm:ss.SSSSSS

那么你的解析代码应该从

date2 = toFormat.parse(test);

date2 = fromFormat.parse(test);
System.out.println(toFormat.format(date2));

我得到了输出

2014-10-08 04:59:00.000000

关于Java将日期转换为sql时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26270609/

相关文章:

sql - 在配置单元中使用 QUALIFY Row_Number

mysql - 按周/月间隔的日期范围分组

php 日期函数返回错误值

python - 如何在python中将字符串 '2020-01-06T00:00:00.000Z'转换为datetime?

java - 以点为分隔符拆分字符串

java - Java 中的音乐(开始/停止)

java - 从 object[][] 数组中获取 int Java Reflect

java - 为什么这个 env 对象的大小不断增长?

sql - 选择组中的所有行都不为空 postgresql

c# - 如何在 EditorFor HTMLHelper 中的 MVC 4 DateTime 中附加前导 0?