Обновить / Получить / Вставить поле даты - PullRequest
0 голосов
/ 08 августа 2010

У меня проблемы с обновлением поля даты в Базе данных. Тип поля в БД - Дата / Время.

Теперь я пытаюсь обновить имя поля "R_Date".

В настоящее время я использую выражение SQL в моем jsp " UPDATE request SET request_date ='"+Request_Date+"'";, но не принимает.

В операторе выбора я использую обычный выбор, я пытался использовать to_char или to_date, но он не принимает формат "DD-MMM-YYYY"

Итак, не могли бы вы помочь мне получить / обновить / вставить поле даты в формате «ДД-МММ-ГГГГ» в поле даты?

Ответы [ 3 ]

2 голосов
/ 08 августа 2010

Обычной практикой для хранения временной метки в БД (например, java.util.Date на стороне Java и java.sql.Timestamp на стороне JDBC) является использование PreparedStatement#setTimestamp().

Date requestDate = getItSomehow();
Timestamp timestamp = new Timestamp(requestDate.getTime());
preparedStatement = connection.prepareStatement("UPDATE request SET request_date = ?");
preparedStatement.setTimestamp(1, timestamp);

Обычной практикой для получения метки времени из БД является использование ResultSet#getTimestamp().

Timestamp timestamp = resultSet.getTimestamp("request_date");
Date requestDate = timestamp; // You can just upcast.

Для преобразования между java.util.Date и java.lang.String вы обычно используете SimpleDateFormat:

// Convert from String to Date.
String requestDateAsString = "09-Aug-2010";
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
Date requestDate = sdf.parse(requestDateAsString);

// Convert from Date to String.
String anotherDateAsString = sdf.format(someDate);

Смотри также:

1 голос
/ 08 августа 2010

Я думаю, вы должны использовать MON вместо MMM.

Вы пробовали что-то вроде:

<code>UPDATE request
SET request_date = to_date('" + Request_Date + "', 'DD-MON-YYYY')

Надеюсь, вы понимаете, что, поскольку ваше утверждение остается в силе (если оно работает), оно будет обновлять каждую строку в таблице запросов (не уверен, что это ваше намерение или нет, но я думал, что укажу на это).

0 голосов
/ 08 августа 2010

Вам необходимо проверить, какой формат даты вы пытаетесь вставить, и попробовать использовать метод to_date с соответствующим форматом.

Следующие ссылки: http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html

Формат Oracle по умолчанию для DATE - "DD-MON-YY". Если вы хотите получить дату в определенном формате, вам нужно использовать:

    TO_CHAR(<date>, '<format>')

Аналогично, если вам нужно вставить / обновить дату с вводом даты, отличной от стандартного формата, вам необходимо использовать:

TO_DATE(<string>, '<format>')

где строка <format> может быть сформирована из более чем 40 опций. Вот некоторые из наиболее популярных:

    MM  Numeric month (e.g., 07)
    MON Abbreviated month name (e.g., JUL)
    MONTH   Full month name (e.g., JULY)
    DD  Day of month (e.g., 24)
    DY  Abbreviated name of day (e.g., FRI)
    YYYY    4-digit year (e.g., 1998)
    YY  Last 2 digits of the year (e.g., 98)
    RR  Like YY, but the two digits are ``rounded'' to a year in the range 1950 to 2049. Thus, 06 is considered 2006 instead of 1906
    AM (or PM)  Meridian indicator
    HH  Hour of day (1-12)
    HH24    Hour of day (0-23)
    MI  Minute (0-59)
    SS  Second (0-59)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...