Удалить 'T' из даты и времени и преобразовать в дату sql - PullRequest
0 голосов
/ 24 мая 2018

У меня есть поле json как

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

Теперь мне нужно использовать это поле в хранимой процедуре postgres в качестве входного параметра.В SP типом поля ввода является метка времени, так как мне нужно преобразовать этот dateTime в метку времени sql без 'T' между ними (только 2018-06-02 15:49:23).Любые предложения о том, как мне добиться этого в Java, очень ценятся.

Ответы [ 3 ]

0 голосов
/ 24 мая 2018
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*/
0 голосов
/ 25 мая 2018

Вместо того, чтобы просто удалять T, я рекомендую вам разобрать строку в LocalDateTime в Java.Метод 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 или выше мы предпочитаем использовать LocalDateTime или Instant.

0 голосов
/ 24 мая 2018

Вы можете просто выбрать его:

t=# select ('{"dateTime" : "2018-06-02T15:49:23"}'::json->>'dateTime')::timestamp;
      timestamp
---------------------
 2018-06-02 15:49:23
(1 row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...