【问题标题】:Pull data from table based on the date of the first record根据第一条记录的日期从表中提取数据
【发布时间】:2017-08-25 08:27:38
【问题描述】:

我正在根据用户输入的日期从 sql 表中查询一些数据,如下所示:

dt = as.Date(some_date)

# Manipulate dates
end_date = as.Date(dt)
begin_date = as.character(as.Date(end_date) - 364)

在此之后发生的情况是,日期字段位于开始日期和结束日期之间的表中的所有记录都将被提取。

qry <-  paste0("select * from table 
                 where date>= '", begin_date, "' and date <= '", end_date; ")

但有时可能会发生我没有 1 年的数据,而只有 10 或 9 或 8 个月的数据。 所以我希望能够根据表中的第一个日期更改 364 值。 那么在 R 中是否有任何方法可以提取以开始日期为 end_date - 364 的记录,如果表中不存在该日期,则将开始日期更改为第一个可用日期并再次运行查询。

我知道这需要两次传递日期和查询,但我希望能够迭代地执行此操作,而无需手动检查日期。

【问题讨论】:

  • 您可能正在寻找类似的东西 - qry &lt;- paste0("select * from table where date &gt;= max('", begin_date,"', (select min(date) from table))", " and date &lt;= '", end_date, "';")

标签: sql r date


【解决方案1】:

您的查询将为您提供一年的数据或table 中可用的所有数据,这似乎是您的要求。但是,如果您需要在选择数据之前知道是否有超过一年的数据,则可以使用

SELECT MIN(date) FROM table

获取最早的可用日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 2018-09-04
    • 2021-09-23
    相关资源
    最近更新 更多