Как следует передать значение даты в MySQL?

0

У меня есть поле столбца с именем StartDate в StartDate данных MySQL of Date. В своем приложении я определил способ отображения текущей даты на моей странице следующим образом.

String today = CoreUtil.parseDate(new Date());

Это в основном возвращает дату в YYYY-MM-DD и сохраняет ее в виде строки, что нормально.

Теперь я хотел бы передать это значение в функцию, которая вставляет значение в столбец StartDate.

Функция, которую я объявил, выглядит следующим образом:

public void insert_update(String nodeid,String ts,Date startdt,Date enddt,int enable)

Я вызываю эту функцию и передаю ей значение today как показано ниже:

 fileFacade.insert_update(...,....,today,....,...);

Теперь я не эксперт в этой области данных, и, видя, что она не позволит мне передать значение, как я определил его как параметр Date, как мне решить эту проблему?

Должен ли я преобразовать его обратно в формат даты и передать значение или MySQL разрешает вставку строкового значения в столбец типа данных Date?

Я просто хочу сохранить значение в моей таблице в YYYY-MM-DD.

редактировать:

Моя функция:

public void insert_update(String nodeid,String ts,Date startdt,Date enddt,int enable){
     try {

         //   UrlLink attr = em.find(UrlLink.class,n);


         String sql="UPDATE urllink SET STARTDT="+startdt+",ENDDT="+enddt+",ENABLE="+enable+"WHERE URL='f0="+nodeid+"&ts="+ts + "'";

         em.createNativeQuery(sql).executeUpdate();




     }catch (Exception e) {
         e.printStackTrace();
     }

 }
  • 0
    Сохраните метку времени (long) в базе данных.
  • 0
    Мне не нужен формат, чтобы иметь время в моей таблице, только в формате YYYY-MM-DD
Показать ещё 6 комментариев
Теги:

2 ответа

0

Вы не должны пытаться преобразовать String в Date, чтобы вставить ее в таблицу. Вы можете использовать тип date как при использовании preparedStatement, например:

Date date = new Date();
PreparedStatement pStmt = connection.prepareStatement("<query>");
pStmt.setDate(1, date);

Вот этот Javadoc.

Обновить

Если целью здесь является отображение даты в указанном формате, то я настоятельно рекомендую сохранить дату как DATE в MySQL, чтобы отформатировать ее при запросах. Решение о том, как мы храним дату, не должно зависеть от того, как она должна отображаться во внешнем интерфейсе, поскольку нам может потребоваться отображение разных форматов даты в нескольких пользовательских интерфейсах.

  • 0
    Но это также включает часы, минуты и секунды. Я не хочу этого
  • 0
    Это будет заботиться о типе даты MySQL. Если вам не нужны часы, минуты и т. Д. В запросе, вы можете просто выбрать часть даты.
Показать ещё 11 комментариев
-1

Передайте строковую дату в параметре метода вместо типа Дата, а затем отформатируйте этот тип даты следующим образом:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);

formatter.parse(date)
  • 0
    Спасибо за желание внести свой вклад. Пожалуйста, не учите детей использовать давно устаревший и печально известный класс SimpleDateFormat . По крайней мере, не в качестве первого варианта. И не без оговорок. Сегодня у нас намного лучше в java.time , современном API даты и времени Java и его DateTimeFormatter . А также сохраняйте и передавайте дату в LocalDate , а не в String .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню