编写查询以比较 google 融合中的时间 table
Write Query to Compare time in google fusion table
我想从 google fusion table 中获取满足给定日期条件的所有条目
时间栏>具体时间
https://www.googleapis.com/fusiontables/v2/query?sql=SELECT * FROM 1WjowbI77j1WFcn3IEtbwBymhVZh8jfmP_dg1epd9 WHERE Date = '2015-02-23' AND Time > '10:25:04'&key=AIzaSyCALoSz00ZY3zTL1D_xUTD9GMb3T1ocBdU
但它给了我所有的结果..
融合 table :
我无法确切地告诉你那里发生了什么,我看到的唯一问题是你省略了 AM(PM)
文档提到了支持过滤的日期时间格式,但我认为这部分文档已经过时(参见:Date query with the current date between two date_time columns)。
对我来说,当我复制 table(你也可以这样做)时,它按预期工作:
https://www.googleapis.com/fusiontables/v2/query?sql=SELECT * FROM 12tl0d4jZRkhPD9ZdBzP2QzK4TyEu-U_Dnn8kimft WHERE Date = '2015-02-23' AND Time > '10:25:04 AM'&key=yourKey
也许他们 运行 验证 table 将被复制并以另一种格式在内部存储日期时间列。
假定Time
列的类型为Date/Time
,格式为H:mm:ss AM/PM
在那种情况下,Date/Time
列的过滤似乎 不支持 。
根据 Row and Query SQL Reference 文档:
Filtering on DATETIME
When filtering on a column of type DATETIME
, the <value>
should be
formatted as one of the following supported formats:
MMM dd, yy
MM/dd/yy
MM-dd-yy
MMM-dd-yy
yyyy.MM.dd
dd-MMM-yy
MMM/yy
MMM yy
dd/MMM/yy
yyyy
话虽如此,您可以考虑对返回的结果应用过滤,如下面的 JavaScript 示例所示:
var key = 'AIzaSyCALoSz00ZY3zTL1D_xUTD9GMb3T1ocBdU'
var sql = "SELECT * FROM 1WjowbI77j1WFcn3IEtbwBymhVZh8jfmP_dg1epd9 WHERE Date = '2015-02-23'";
var requestUrl = "https://www.googleapis.com/fusiontables/v2/query?sql=" + sql + "&key=" + key;
var timeKey = '10:25:04';
$.getJSON(requestUrl, function(data) {
var filteredRows = data.rows.filter(function(row){
var dtCur = Date.parse(row[3] + ' ' + row[7]);
var dtKey = Date.parse(row[3] + ' ' + timeKey);
if (dtCur > dtKey) {
return row;
}
});
//print
var output = JSON.stringify(filteredRows, null, 2);
$("#output").text(output);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre style="background-color: #c0c0c0" id="output"></pre>
我想从 google fusion table 中获取满足给定日期条件的所有条目 时间栏>具体时间
https://www.googleapis.com/fusiontables/v2/query?sql=SELECT * FROM 1WjowbI77j1WFcn3IEtbwBymhVZh8jfmP_dg1epd9 WHERE Date = '2015-02-23' AND Time > '10:25:04'&key=AIzaSyCALoSz00ZY3zTL1D_xUTD9GMb3T1ocBdU
但它给了我所有的结果..
融合 table :
我无法确切地告诉你那里发生了什么,我看到的唯一问题是你省略了 AM(PM)
文档提到了支持过滤的日期时间格式,但我认为这部分文档已经过时(参见:Date query with the current date between two date_time columns)。
对我来说,当我复制 table(你也可以这样做)时,它按预期工作:
https://www.googleapis.com/fusiontables/v2/query?sql=SELECT * FROM 12tl0d4jZRkhPD9ZdBzP2QzK4TyEu-U_Dnn8kimft WHERE Date = '2015-02-23' AND Time > '10:25:04 AM'&key=yourKey
也许他们 运行 验证 table 将被复制并以另一种格式在内部存储日期时间列。
假定Time
列的类型为Date/Time
,格式为H:mm:ss AM/PM
在那种情况下,Date/Time
列的过滤似乎 不支持 。
根据 Row and Query SQL Reference 文档:
Filtering on DATETIME
When filtering on a column of type
DATETIME
, the<value>
should be formatted as one of the following supported formats:MMM dd, yy MM/dd/yy MM-dd-yy MMM-dd-yy yyyy.MM.dd dd-MMM-yy MMM/yy MMM yy dd/MMM/yy yyyy
话虽如此,您可以考虑对返回的结果应用过滤,如下面的 JavaScript 示例所示:
var key = 'AIzaSyCALoSz00ZY3zTL1D_xUTD9GMb3T1ocBdU'
var sql = "SELECT * FROM 1WjowbI77j1WFcn3IEtbwBymhVZh8jfmP_dg1epd9 WHERE Date = '2015-02-23'";
var requestUrl = "https://www.googleapis.com/fusiontables/v2/query?sql=" + sql + "&key=" + key;
var timeKey = '10:25:04';
$.getJSON(requestUrl, function(data) {
var filteredRows = data.rows.filter(function(row){
var dtCur = Date.parse(row[3] + ' ' + row[7]);
var dtKey = Date.parse(row[3] + ' ' + timeKey);
if (dtCur > dtKey) {
return row;
}
});
//print
var output = JSON.stringify(filteredRows, null, 2);
$("#output").text(output);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre style="background-color: #c0c0c0" id="output"></pre>