2015-06-06 2 views
2

Я хочу, чтобы получить все записи из Google Fusion таблицы, которая удовлетворяет условию в данной дате колонке Time> определенный момент времениНаписать запрос для сравнения времени в сводную таблицу Google

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 

Но это дает мне все записи, как результат ..

фьюжн стол:

https://www.google.com/fusiontables/data?docid=1WjowbI77j1WFcn3IEtbwBymhVZh8jfmP_dg1epd9&key=AIzaSyCALoSz00ZY3zTL1D_xUTD9GMb3T1ocBdU#rows:id=1

ответ

1

Предполагаются, что тип Time столбца Date/Time и формат H:mm:ss AM/PM

В этом случае, по-видимому фильтрация на колонке Date/Time является не поддерживается.

Согласно Row and Query SQL Reference документации:

фильтрации на DATETIME

При фильтрации на колонке типа DATETIME, то <value> должен быть отформатированный в качестве одного из следующих поддерживаемых форматов:

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>

+0

Моя до Идея состояла в том, чтобы уменьшить данные, которые я извлекать каждый раз .. В этом методе мы каждый раз извлекаем одни и те же данные, а затем получаем то, что хотим ... Есть ли способ, который я могу использовать для получения меньше данных из таблицы каждый раз. Ex: 1-й запрос к таблице: получить все данные 2-го запрос к таблице: все данные, которые обновляются после первого извлечения, затем добавляются к 1-м данным и т. д. – SNT93

+0

, это кажется выполнимым, но для этого требуется введение дополнительный столбец, в котором будет храниться информация о том, следует ли обновлять столбец в следующий раз или нет. Подводя итог: 1-й запрос: получить все данные и второй запрос: обновить таблицу для сохранения информации о обновленных запросах 3d-строк: получить только строки, которые необходимо обновить ... –

0

Я не могу сказать вам точно, что там, единственная проблема, я вижу, что вы опустили AM (PM)

В документации упоминаются поддерживаемые DateTime-форматы для фильтрации, но я думаю, что эта часть документации устарела (см.: Date query with the current date between two date_time columns).

Для меня это работает, как ожидалось, когда я делаю копию таблицы (вы можете сделать то же самое):

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 

Может быть, они запустить проверку, когда таблица будет скопирована и хранить DateTime-столбцы внутри в другом формате.