替代IBM solidDB的“interval”日期语法

时间:2011-03-16 16:01:05

标签: sql date syntax intervals

对于一个研究项目,我正在使用IBM的solidDB来运行一些测试查询。我正在使用的数据集是TPC-H数据集,因此使用它附带的查询似乎是一个合乎逻辑的选择。但是,在19个查询中,有8个使用SQL-92的日期间隔语法:

select
    l_returnflag,
    l_linestatus,
    sum(l_quantity) as sum_qty,
    sum(l_extendedprice) as sum_base_price,
    sum(l_extendedprice * (1 - l_discount)) as sum_disc_price,
    sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge,
    avg(l_quantity) as avg_qty,
    avg(l_extendedprice) as avg_price,
    avg(l_discount) as avg_disc,
    count(*) as count_order
from
    lineitem
where
    l_shipdate <= date '1998-12-01' - interval ':1' day (3)
group by
    l_returnflag,
    l_linestatus
order by
    l_returnflag,
    l_linestatus;

:1中的查询生成器填充为数字。根据实数IBM solidDB SQL Guide,solidDB不支持interval关键字。

为了使用随TPC-H基准测试提供的查询模板,我需要某种替代语法来用于从日期等中减去日期。 TIMESTAMPADD似乎也没有做太多,所以我现在没有想法。

2 个答案:

答案 0 :(得分:2)

我不是solidDB的专家,但你提供的链接有这种语法...

SELECT NAME, {fn
TIMESTAMPADD(SQL_TSI_YEAR, 1,
HIRE_DATE)} FROM
EMPLOYEES

尝试将{fn}放在函数调用周围?

答案 1 :(得分:1)

带有一些示例的标量函数列在the Programmer guide中。在7.0版中,如果缺少某些内容,您还可以编写外部函数和C程序。可以从SQLGuide&gt;中找到更多信息。 SQL参考

如果您对solidDB有任何疑问,请随时将它们发布到IBM developerWorks

干杯,Vilho Raatikka