2015-10-28 4 views
0

i использовать формы оракула 11g. И я передаю To_Date(sysdate,'dd-mm-yyyy'), который вставлен в базу данных, а тип данных столбца - date. но он вставлен как 22-10-0015 вместо 22-10-2015, можете ли вы мне помочь?Как вставить дату с использованием формы оракула

Я использую процедуру для вставки данных s и оракула с кнопки click.i необходимо вставить формат dd-mm-yyyy в базу данных, как это сделать?

ответ

2

sysdate уже является датой, поэтому не имеет смысла называть to_date() для этого. Вы неявно преобразовываете его в строку, а затем явно возвращаетесь к дате. Неявный шаг использует свои формы NLS_DATE_FORMAT сеанса, который является предположительно DD-MM-YY от симптомов, так что вы действительно делаете:

to_date(to_char(sysdate,'dd-mm-yy'),'dd-mm-yyyy') 

неявной строка версия покажет год как 15, если вы запускали что самостоятельно; и явное преобразование правильно рассматривает это как 0015, а не предполагает 2015 год.

Вы должны просто передать sysdate; но если вы пытаетесь раздеть время так он показывает, как полночь, вы можете использовать the trunc() function:

trunc(sysdate) 
0

SYSDATE уже DATE. Вам не нужно использовать TO_DATE, чтобы преобразовать его в DATE.

Что происходит, так это то, что вы преобразовываете SYSDATE в строку, и вы используете маску YYYY, которая будет транслировать любой год за 2000 год в 00 (поэтому 2015 год конвертируется в 15-й год). Если вы используете маску RRRR вы получите ожидаемый результат:

TO_DATE(SYSDATE,'dd-mm-rrrr') 

Однако, это не очень хорошая идея, так как это unnecesary и может не сработать, если модель NLS_DATE_FORMAT используется для неявного преобразования в строке не соответствует.

+0

Это будет (а) по-прежнему делать ненужное преобразование в строку и обратно и (b) сбой, если модель NLS_DATE_FORMAT, используемая для неявного преобразования в строку, не соответствует; например если это mm/dd/yyyy. Это временно исправляет проблему, в лучшем случае, и это не очень хорошая идея. –

+0

@AlexPoole Конечно, это ненужное обращение. Я сказал это в первой строке моего ответа. Я отредактирую свой ответ, чтобы заметить, что это не очень хорошая идея, и может даже потерпеть неудачу. Я просто хотел объяснить, почему он получает 15-й год вместо 2015 года. – pablomatico

Смежные вопросы