【问题标题】:How to extract data of last week from Firebird database?如何从 Firebird 数据库中提取上周的数据?
【发布时间】:2022-10-18 22:33:27
【问题描述】:

我无法让查询正常工作,数据库是 Firebird 数据库,而我用于查询数据的工具是 DBeaver。 - 工作要求,别无选择。 目标是运行查询,只提取上周的数据,这是我尝试过的查询之一:

select *
from table 1
where 1.payment_rundate > dateadd(DAY, -7,CURRENT_TIMESTAMP())

我发现 DBeaver 无法识别 dateadd 语法。

【问题讨论】:

  • 你得到的确切错误是什么,你的 Firebird 版本是什么,因为 DATEADD 是正确的函数

标签: sql firebird


【解决方案1】:

问题不在于DATEADD,问题在于Firebird 语法不允许CURRENT_TIMESTAMP(),它只允许CURRENT_TIMESTAMP(无括号)或CURRENT_TIMESTAMP(precision),其中精确是 0 - 3。

换句话说,使用条件:

payment_rundate > dateadd(DAY, -7, CURRENT_TIMESTAMP)

部分问题在于 DBeaver 的自动补全生成 CURRENT_TIMESTAMP() 并将光标定位在括号内,期望您输入所需的精度。如果您不想指定精度,则由您决定删除这些括号。

【讨论】:

  • 非常感谢,查询现在有效。
【解决方案2】:

我会尝试interval

select *
from table 1
where 1.payment_rundate between (current_date - INTERVAL 7 DAY) and current_date 

【讨论】:

  • Firebird 没有间隔。
【解决方案3】:

我认为只有以下内容可以解决问题:

select *
  from table 1
 where 1.payment_rundate >= current_date - 6

如果 payment_rundate 是一个时间戳,那么你可以使用它:

select *
  from table 1
 where cast(1.payment_rundate as date) >= current_date - 6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    相关资源
    最近更新 更多