Oracle: тип даты дает ошибки

if day < 10 then
  dataV := to_date(((day*1000000) + (month*10000) + year),'d/mm/yyyy');
else
  dataV := to_date(((day*1000000) + (month*10000) + year),'dd/mm/yyyy');
end if;

Ребята, я пытаюсь сформировать дату, используя только целые числа, выполняя эту математику, как я видел на каком-то форуме Oracle, но она продолжает выдавать мне ошибки, потому что, по-видимому, это неправильно. Какие-либо предложения?


person Community    schedule 01.12.2013    source источник
comment
Можете ли вы показать пример значений?   -  person Filipe Silva    schedule 01.12.2013
comment
В этом случае я пытаюсь создать эту дату «01.01.2014».   -  person    schedule 01.12.2013
comment
to_date() принимает на вход символьное значение, а не число   -  person a_horse_with_no_name    schedule 01.12.2013


Ответы (1)


Если я правильно понимаю, один из следующих примеров должен помочь:

day:= 1;
month:=1;
year:=2014;
if day < 10 then
  dataV := to_date(((day*1000000) + (month*10000) + year),'dmmyyyy');
else
  dataV := to_date(((day*1000000) + (month*10000) + year),'ddmmyyyy');
end if;

Or

day:= 1000000;
month:= 10000;
year:=2014;
if day < 10 then
  dataV := to_date(day + month + year,'dmmyyyy');
else
  dataV := to_date(day + month + year,'ddmmyyyy');
end if;
person Lajos Veres    schedule 01.12.2013
comment
Ошибка, которую он мне дает, буквально не соответствует формату даты. И я попробовал ваш код, он говорит, что месяц недействителен по какой-то причине. - person ; 01.12.2013
comment
Можете ли вы показать точные значения дня, месяца, года? Или, может быть, значение следующего выражения? ((день*10000) + (месяц*1000) + год) - person Lajos Veres; 01.12.2013
comment
День = 10000 Месяц = ​​1000 Год = 2014 - person ; 01.12.2013
comment
День должен быть 1 месяц 1 и год 2014, если вы хотите использовать это выражение. Если вы придерживаетесь своих входных примеров, вам следует удалить постоянные умножения. (to_date(день+месяц+год,...) - person Lajos Veres; 01.12.2013
comment
Можете ли вы дать мне код? Я пробую так много разных способов, и каждый из них неправильный. Так раздражает это. - person ; 01.12.2013
comment
Я изменил свой ответ. Я надеюсь, что это помогает. - person Lajos Veres; 01.12.2013
comment
Эх извините. Мне кажется, нулей не хватило... Я поправил. - person Lajos Veres; 01.12.2013
comment
Он работает, за исключением того, что он говорит, что вступает в конфликт с юлианской датой. Вы знаете, что это? - person ; 01.12.2013
comment
Я не знаком с этим сообщением. Возможно, это поможет: docs.oracle.com/cd/ A64702_01/doc/server.805/a58312/newch227.htm - person Lajos Veres; 01.12.2013