Я вижу: Вы хотите, чтобы какой-то способ перестановки цифр числа, чтобы стать Дата. Похоже, что кодировка [m]mddyyyy
. (Почему в базе данных нет данных date
?)
Число должно быть преобразовано в строку, а затем подстроки упорядочены и преобразованы в дату. Учитывая сложности здесь, вместо того, чтобы поле было изменено, чтобы быть правильным типом данных, должна быть записана функция преобразования. Что-то вроде этого должны сделать это (непроверенные, отсутствие доступа к db2):
create function decimaldate(decdate DECIMAL)
returns DATE
return
with tmp (dstr) as
(
select substr(digits (decdate),8)
from sysibm.sysdummy1
)
select
date (substr(dstr,4,4) || '-' ||
substr(dstr,1,2) || '-' ||
substr(dstr,3,2)
)
from tmp
Это преобразует число в строку, переформатирует строку как yyyy-mm-dd
и преобразуется в дату. (Я использовал this в качестве основы.)
Таким образом, решение к первоначальному вопросу просто написать:
SELECT *
FROM table1
WHERE decimaldate(DECIMALCOLUMN) = @date
С таким ненормальным способом кодирования даты в базе данных, имеющая функцию всегда доступны должен оказаться неоценимым.
В чем вопрос? – wallyk
Вопрос в том, как мне преобразовать десятичную дату (12-13 символов) в формат даты. В этом примере год также перемещается в начало даты. – tdjfdjdj
Обратите внимание, что попытка конвертировать числовое поле непосредственно в поле даты приведет к непредвиденным значениям - DB2 считает числовой ввод числом _ дней (-1) с 0001-01-01 –