Учитывая, что, как и многие другие должности, нет DDL не дал, я могу предложить, что:
зависимо от DDL для ML2DDM быть CHAR (4), VARCHAR (4), SMALLINT , DECIMAL, NUMERIC, BIGINT или INTEGER [числовых типов, то также обеспечивается не более четырех цифр точности для любых фактических значений, хотя фактическая точность столбца несущественна, но только если столбец также определен с нулевым значением, масштаб; что, разумеется, подразумевается различными типами INT], должно быть достаточно следующего выражения для вставки символа /
между компонентами ММ и DD каждой базы данных MMDD, которая была сохранена либо с трехзначным числом ###, либо с помощью значение четырех цифр #### [где # представляет любую десятичную цифру от нуля до девяти]; если цифры хранятся как символьные строки, то они должны быть сохранены влево, а любые нецифровые данные будут аналогичным образом отредактированы, несмотря на то, что они не являются достоверными представлениями фактических значений даты, но ни один отредактированный результат числового значения обеспечиваются действительными таким образом:
insert (case length(rtrim(ML2DDM))
when 3 then '0' else '' end
concat ML2DDM
, 3, 0, '/') as due__date_ins
Зная фактический DDL может обеспечить более емкое выражение.
Если фактический результат DATE типа данных желательно, такое выражение, как одно предложенных выше, может заменить expr
в следующей вариации выражения TIMESTAMP_FORMAT, чтобы сгенерировать TIMESTAMP со значением текущего года TO_DATE(expr, 'MMDD')
, и что может быть перенесенным в DATE; например DATE(TO_DATE(expr, 'MMDD'))
Конечно, результаты этого дополнительного литья требуют, чтобы значения данных сохранялись как допустимые значения MMDD [или MDD].
30-сентября-2016 Добавление:
Если DDL для ML2DDM является числовым [без поплавка], то IIRC неявного приведения эффект от числовой характеру бросает в VARCHAR, так что следующее будет достаточно простое выражение для осуществления как ММДД к "MM/DD" и MDD к "MM/DD":
insert (LPAD(ML2DDM , 4, '0') , 3, 0, '/') as Due__Date
* '(SubStr (ML2DDM, 0,3) ||'/'|| SubStr (ML2DDM, 3 , 2)) как Due__Date '* не похож на Sql :) – Dan
@ Dan Не нравится C# :) – Nsevens
Это совершенно правильный SQL, хотя использование «0» в качестве исходной позиции для SUBSTR() необычно, даже если оно действительно. И использование SUBSTR() для столбца INTEGER также неразумно, хотя, возможно, имеет смысл в некоторых случаях, когда значение является auto-CAST для CHAR. – user2338816