【问题标题】:How to add/subtract n number of days from a custom date in postgresql?如何从 postgresql 中的自定义日期添加/减去 n 天?
【发布时间】:2021-05-12 23:04:04
【问题描述】:

我有一个数据库,其中有一个 issue_date 列和一个 forecast_date 列,

我正在从数据库中选择最大日期,

但我想从最大可用日期中获取/查询/提取前 N 天

like(最长日期 - 1 / 2 或 n 天)。

SELECT issue_date, forecast_date, state_name, district_name, rainfall, geometry 
FROM all_parameters_forecast_data 
WHERE "forecast_date" = (SELECT ((MAX("forecast_date")- INTERVAL '1 day') AS "forecast_date") FROM all_parameters_forecast_data)

& 由于最大日期是自定义的,

所以这里不能使用今天或昨天的逻辑。 有什么办法吗?

【问题讨论】:

  • 我已经删除了您显然不使用的产品标签。请标记问题涉及的产品
  • 样本数据最好显示为formatted text。请参阅here,了解有关如何创建漂亮表格的一些提示。
  • 感谢@BritishSteel,列的数据类型是测试,我将列的数据类型更改为日期并且代码有效。

标签: sql postgresql date datetime date-arithmetic


【解决方案1】:
  1. 计算 MAX 日期
  2. 使用BETWEEN max_date - n AND max_date 过滤您的记录

例子:

SELECT issue_date, forecast_date, state_name, district_name, rainfall, geometry 
FROM (
    SELECT
        *,
        MAX("forecast_data") OVER () as max_forecast_date
    FROM 
        all_parameters_forecast_data
) s
WHERE "forecast_date" BETWEEN max_forecast_date - n AND max_forecast_date

有很多方法可以实现#1。在我的示例中,我使用了MAX() 窗口函数将所需的值添加为单独的列,以便以后进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 2011-11-12
    • 2015-11-26
    • 2023-02-13
    • 1970-01-01
    • 2011-01-21
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多