【问题标题】:Effective date statement where date spans multiple columns日期跨越多列的有效日期声明
【发布时间】:2010-02-05 09:26:39
【问题描述】:

我正在开发一个 DB2 数据库并尝试按生效日期获取记录。唯一的问题是有效日期字段跨越 4 列(月、日、世纪、年)。我想我已经在选择中找出了日期,但是当我添加 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')

想法?

【问题讨论】:

    标签: sql database db2


    【解决方案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')
    

    【讨论】:

      【解决方案2】:

      你不能把整个串联放在选择中吗?

      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')
      

      【讨论】:

      • 试过这样做,但没有任何反应。
      • 或许没有什么能满足条件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      相关资源
      最近更新 更多