Попробуйте:
SELECT * FROM tableName WHERE $DATE=
substring(cast(current date as char(10)),6,2) ||
substring(cast(current date as char(10)),9,2) ||
substring(cast(current date as char(10)),3,2)
Вы можете увидеть, какое значение возвращает это выражение, вот так:
select substring(cast(current date as char(10)),6,2) ||
substring(cast(current date as char(10)),9,2) ||
substring(cast(current date as char(10)),3,2)
from sysibm.sysdummy1
Вы должны использовать sysibm.sysdummy1
, поскольку SQL в AS / 400(iSeries, System i и т. д.) не позволяет вам SELECT
значений из ничего.
Также обратите внимание, что current date
может вернуть дату в другом формате, в зависимости от даты SQLформат.Этот код ожидает, что он будет в формате * ISO (YYYY-MM-DD
).
Вот некоторые операторы SQL, которые я использовал для проверки этой подпрограммы.
create table dmclib.test2 ( $DATE decimal(6,0) ) ;
insert into dmclib.test2 values
(010111), (010211), (031011) ;
SELECT * FROM dmclib.test2
where $DATE =
substring(cast(current date as char(10)),6,2) ||
substring(cast(current date as char(10)),9,2) ||
substring(cast(current date as char(10)),3,2) ;
Вот что я получил:
....+...
$DATE
31,011
******** End of data ********