我使用如下公式获取股票数据:
=IMPORTDATA("https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY_EXTENDED&symbol=IBM&interval=15min&slice=year1month1&apikey=demo")
基本上,我的目标是使用查询公式按日期和时间过滤数据,这样包含原始数据的表就不会显示出来。
我想要第1列、第3列和第6列的数据,按日期(在本例中是来自单元格J1的7/12/2022)和时间(在4:15:00和9:30:00之间)筛选。
我试过这个公式
=QUERY(IMPORTDATA("https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY_EXTENDED&symbol=IBM&interval=15min&slice=year1month1&apikey=demo"),"select Col1, Col3, Col6 WHERE Col1 > datetime '"&TEXT(J1+time(4,15,0),"yyyy-mm-dd HH:mm:ss")&"' and Col1 <= datetime '"&TEXT(J1+time(9,30,0),"yyyy-mm-dd HH:mm:ss")&"'")
,但我能得到的唯一结果是标题。
这是一个到工作表的链接
答案
下面的公式应该会产生你想要的结果:
=QUERY(IMPORTDATA("https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY_EXTENDED&symbol=IBM&interval=15min&slice=year1month1&apikey=demo"),"SELECT Col1, Col3, Col6 WHERE Col1 > "&J1+TIME(4,15,0)&" AND Col1 <= "&J1+TIME(9,30,0))
为方便阅读,这里是=QUERY
的第二个参数。
"SELECT Col1, Col3, Col6 WHERE Col1 > "&J1+TIME(4,15,0)&" AND Col1 <= "&J1+TIME(9,30,0)
在幕后,Google工作表中的所有日期和时间值都存储为简单的数字。因此,可以在查询中使用简单的数字比较来确定一个日期是否大于另一个日期,跳过=TEXT
函数和datetime
参数之间的大量中间内容。所提供的=QUERY
只是将Col1
中的每个值与J1
和所提供的时间值的总和进行比较。
功能使用:查询
- =
- = IMPORTDATA
- =