我正在使用AlphaVantage API(https://www.alphavantage.co/documentation/#daily)来获取每日库存数据。遗憾的是,API不提供仅获取特定日期范围的数据的选项。它始终返回过去20年的所有数据。它返回的哈希包含日期作为键:
"2016-12-08": {
"1. open": "61.3000",
"2. high": "61.5800",
"3. low": "60.8400",
"4. close": "61.0100",
"5. volume": "21220753"
},
"2016-12-07": {
"1. open": "60.0100",
"2. high": "61.3800",
"3. low": "59.8000",
"4. close": "61.3700",
"5. volume": "30808969"
},
"2016-12-06": {
"1. open": "60.4300",
"2. high": "60.4600",
"3. low": "59.8000",
"4. close": "59.9500",
"5. volume": "19907035"
},
如何仅选择给定时间范围的条目,例如。 2016-12-01至2016-12-10?我知道我总是会获得完整的数据,并且会对返回的哈希进行过滤。
答案 0 :(得分:1)
您可以使用SELECT CityHOME.CITY_NAME as HomeCity, CityWork.CITY_NAME as WorkCity
FROM TBL_HOME HOME
LEFT JOIN TBL_WORK WORK on HOME.PrimaryKey = WORK.ForeignKey
LEFT JOIN REF_CITY CityHOME on CityHOME.CITY_ID = HOME.CITY_ID
LEFT JOIN REF_CITY CityWork on CityWork.CITY_ID = WORK.CITY_ID
,如下所示:
hash.select { |k, _| Date.parse(k) < Date.parse("2016-12-10") && Date.parse(k) > Date.parse("2016-12-01")}
答案 1 :(得分:0)
由于您已经有哈希,可以尝试使用select:
TBL_WORK
答案 2 :(得分:0)
一种方法是使用Hash#select
和范围:
def filter_dates(hash, first, last)
range = Date.parse(first)..Date.parse(last)
hash.select { |k, _| range.include?(Date.parse(k)) }
end