删除' T'从日期时间转换为sql日期

时间:2018-05-24 11:48:51

标签: java postgresql datetime

我有json字段

{"dateTime" : "2018-06-02T15:49:23"}

现在我需要在postgres存储过程中使用此字段作为输入参数。在SP中,输入字段类型是时间戳,因为我需要在sql时间戳中转换此dateTime而不使用' T'介于两者之间(仅2018-06-02 15:49:23)。 关于如何用Java实现它的任何建议都非常感谢。

3 个答案:

答案 0 :(得分:0)

你可以选择它:

t=# select ('{"dateTime" : "2018-06-02T15:49:23"}'::json->>'dateTime')::timestamp;
      timestamp
---------------------
 2018-06-02 15:49:23
(1 row)

答案 1 :(得分:0)

import org.json.*;

... let's obj is your var that contain your JSON with datetime
String dateTime= obj.getString("dateTime");

DateTimeFormatter f = DateTimeFormat.forPattern("yyyy-MM-ddTHH:mm:ss");
DateTime dateTime = f.parseDateTime(dateTime);

Timestamp ts = new Timestamp(dt.getMillis()); /*if you need in milliseconds*/

答案 2 :(得分:0)

我建议您将字符串解析为Java中的T,而不是仅删除LocalDateTime。 one-arg LocalDateTime.parse方法可以做到:

    LocalDateTime dateTime = LocalDateTime.parse("2018-06-02T15:49:23");

然后,您可以将LocalDateTime传递给期望时间戳的存储过程。

    CallableStatement cs = yourConnection.prepareCall("{call your_stored_procedure(?)}");
    cs.setObject(1, dateTime);

在过去,我们会在这里使用java.sql.Timestamp。那个班级现在已经过时了。对于Java 8和JDBC 4.2或更高版本,我们更喜欢使用LocalDateTimeInstant