对于一个研究项目,我正在使用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似乎也没有做太多,所以我现在没有想法。
答案 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