日期跨越多列的生效日期语句

时间:2010-02-04 15:13:44

标签: sql database db2

我正在研究DB2数据库并尝试按生效日期获取记录。唯一的问题是生效日期字段跨越4列(月,日,世纪,年)。我想我在select中找到了日期部分但是当我添加where子句时我遇到了问题。 (请注意,我使用数字命令来填充,因为2005年只在年份字段中产生5)

select date(concat(digits(vsmo),concat('/',concat(digits(vsdy),      
concat('/',concat(digits(vsct),digits(vsyr)))))))  from 
ddpincgr d
where (SELECT MAX(<NOT SURE WHAT TO PUT IN HERE>) FROM ddpincgr a WHERE a.vgrno = d.vgrno) <= date('1/1/2000')

想法?

2 个答案:

答案 0 :(得分:1)

将其变为子查询

select  *
from (select date(concat(digits(vsmo),concat('/',concat(digits(vsdy),      
concat('/',concat(digits(vsct),digits(vsyr))))))) as myDate  from 
ddpincgr d) as myTable
where max(myTable.myDate) <= date('1/1/2000')

答案 1 :(得分:0)

难道你不能把整个串联放在select?

select  date(concat(digits(vsmo),concat('/',concat(digits(vsdy), concat('/',concat(digits(vsct),digits(vsyr)))))))  
from    ddpincgr d
where   ( SELECT MAX(date(concat(digits(vsmo),concat('/',concat(digits(vsdy), concat('/',concat(digits(vsct),digits(vsyr)))))))) 
          FROM ddpincgr a 
          WHERE a.vgrno = d.vgrno) <= date('1/1/2000')