Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Записать время в БД / 25 сообщений из 56, страница 1 из 3
11.12.2018, 13:23
    #39745974
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Столкнулся, как это часто бывает, с проблемой на ровном месте, а именно: передать дату/время строкой в сервлет и записать в базу.

База Pg, тип поля, хранящего время time without time zone, даты date

Пробовал делать через java.util.Date/Time и java.sql.Date/Time, но эклипс пишет, что java.util - устаревшая библиотека и не хочет нифига отрабатывать. Начал делать через LocalDateTime, преобразовав его в Timestamp, но чегой-то не катит


Код: java
1.
2.
3.
4.
5.
6.
7.
DateTimeFormatter dtfrm = DateTimeFormatter.ofPattern("yyyy-MM-dd"); //задаем формат
LocalDate sdt = LocalDate.parse(request.getParameter("vdt"),dtfrm); //парсим дату
LocalDateTime timesdt = LocalDateTime.of(sdt, LocalDateTime.now().toLocalTime()); //добавляем время
Timestamp gst = new Timestamp(timesdt); //не работает, пишет, что конструктор не определен

//передача в стейтмент
pst.setTimestamp(2,gdt);



Кто уже делал что-то подобное? нужен совет, как сделать, чтоб робало)
...
Рейтинг: 0 / 0
11.12.2018, 13:34
    #39745981
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
с датой разобрался. всё оказалось просто, если думать:
Код: java
1.
2.
3.
4.
java.sql.Date gdt = java.sql.Date.valueOf(sdt);

//передаем в субд
pst.setDate(2,gdt);




со временем проблема осталась
...
Рейтинг: 0 / 0
11.12.2018, 13:45
    #39745990
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcar,
Странно передавать миллисекунды не с клиента или триггером а фальшивые.
База какая?
...
Рейтинг: 0 / 0
11.12.2018, 13:48
    #39745992
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Petro123Korcar,
Странно передавать миллисекунды не с клиента или триггером а фальшивые.
База какая?
да мне хоть какие. дальше сам, думаю, допру
авторБаза Pg
...
Рейтинг: 0 / 0
11.12.2018, 13:52
    #39745997
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcar,

setTimestamp(1, new Timestamp(new Date(). GetTime() + 12345)
...
Рейтинг: 0 / 0
11.12.2018, 13:54
    #39745998
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Petro123Korcar,

setTimestamp(1, new Timestamp(new Date(). GetTime() + 12345)
12345 - это что такое?
...
Рейтинг: 0 / 0
11.12.2018, 13:57
    #39746004
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcar,
Добавить))). Без плюсика текущее. Ты же химичишь там что то.
...
Рейтинг: 0 / 0
11.12.2018, 14:01
    #39746011
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
...
Рейтинг: 0 / 0
11.12.2018, 14:11
    #39746022
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Petro123Korcar,
Добавить))). Без плюсика текущее. Ты же химичишь там что то.
та не. добавлять плюсовать текучку и что-то еще не надо. Из реквеста надо прочитать и в базу бухнуть

сделал так
Код: java
1.
Timestamp stm = new Timestamp(Localtime.parse(request.getParameter("vtm")).getHour());


но пишет всегда 6 часов утра
...
Рейтинг: 0 / 0
11.12.2018, 14:28
    #39746036
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcar,

Входные проверять надо.
Раздели на 3 строки и отладчик останови на строке.
...
Рейтинг: 0 / 0
11.12.2018, 14:47
    #39746047
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Petro123Korcar,

Входные проверять надо.
Раздели на 3 строки и отладчик останови на строке.
отправляется все норм. часы в миллисекунды пишутся
...
Рейтинг: 0 / 0
11.12.2018, 14:55
    #39746055
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Отправляешь
Код: java
1.
11:00


а в базу пишется
Код: java
1.
06:00:00.011
...
Рейтинг: 0 / 0
11.12.2018, 15:17
    #39746084
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcar,
Все равно, разбивать на строки и смотреть.
...
Рейтинг: 0 / 0
11.12.2018, 15:18
    #39746086
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcar,

Убрать вообще getParameter(
...
Рейтинг: 0 / 0
12.12.2018, 07:04
    #39746395
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Petro123Korcar,

Убрать вообще getParameter(
как это убрать getParameter? а откудава тогда читать передаваемое в реквестре время?
...
Рейтинг: 0 / 0
12.12.2018, 07:10
    #39746400
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcar,
что будет при Sysytem.print(stm.toString())?
...
Рейтинг: 0 / 0
12.12.2018, 07:27
    #39746406
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
KorcarPetro123Korcar,

Убрать вообще getParameter(
как это убрать getParameter? а откудава тогда читать передаваемое в реквестре время?
Слона едят по частям!
Отлаживаем запись константы строки в базу.
Как заработает, подставляем уже из параметра ТОЧНО ТАКУЮ СТРОКУ.
...
Рейтинг: 0 / 0
12.12.2018, 09:06
    #39746425
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Petro123Korcarпропущено...

как это убрать getParameter? а откудава тогда читать передаваемое в реквестре время?
Слона едят по частям!
Отлаживаем запись константы строки в базу.
Как заработает, подставляем уже из параметра ТОЧНО ТАКУЮ СТРОКУ.
да ладно. зачем кричишь? с передачей и чтением параметра рекваста проблем то особых нет. попробовал так
Код: java
1.
Timestamp stm = new Timestamp(LocalTime.parse("11:30").getMinute());


результат
06:00:00.03
то есть 30 минут записались в миллисекунды. предположу с вероятностью чуть более, чем 100%, если взять часы, то в миллисекунды они и запишутся
мне приходит в голову мысль, что из LocalTime надо как-то прочитать миллисекунды (ну не самому же часы и минуты переводить в эти злосчастные миллисекунды). Но как это сделать. Метода по миллисекундам у LocalTime нету
...
Рейтинг: 0 / 0
12.12.2018, 09:09
    #39746427
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
вадяKorcar,
что будет при Sysytem.print(stm.toString())?
Код: java
1.
2.
Timestamp stm = new Timestamp(LocalTime.parse("11:30").getMinute());
System.out.println(stm.toString());


вывел в консоль
1970-01-01 06:00:00.03
что теперь с этим делать?
...
Рейтинг: 0 / 0
12.12.2018, 09:26
    #39746434
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcarчто теперь с этим делать?разбираться
...
Рейтинг: 0 / 0
12.12.2018, 09:29
    #39746435
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcar,

LocalTime.parse("11:30") хочет получить полную строку времени.
LocalTime.parse("11:30").getMinute() из полной строки времени возвращает минуты
...
Рейтинг: 0 / 0
12.12.2018, 09:30
    #39746436
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
вадяKorcar,

LocalTime.parse("11:30") хочет получить полную строку времени.
LocalTime.parse("11:30").getMinute() из полной строки времени возвращает минуты
да! об этом я тоже догадался!)))
...
Рейтинг: 0 / 0
12.12.2018, 09:32
    #39746438
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
...
Рейтинг: 0 / 0
12.12.2018, 09:47
    #39746448
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
вадяKorcar,

https://urvanov.ru/2016/06/16/java-8-дата-и-время/
нужна конвертация в sql.timestamp, а этого там нет
...
Рейтинг: 0 / 0
12.12.2018, 10:01
    #39746464
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Записать время в БД
Korcar,

Код: plaintext
1.
timestamp - дата с временем.
Данный тип данных отличается от типа date наличием временной составляющей, которая позволяет хранить время с точностью до микросекунды.

https://jdbc.postgresql.org/documentation/head/8-date-time.html
http://qaru.site/questions/215403/what-is-the-most-recommended-way-to-store-time-in-postgresql-using-java
http://www.sql.ru/forum/1187891/jdbc-postgres-java-time-zoneddatetime
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Записать время в БД / 25 сообщений из 56, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]