Запрос с пустым диапазоном

Я создаю простой запрос для восстановления некоторых данных на основе даты создания записи:

function buildQuery(startDate, endDate)
{
    var start_date = formattedDate(startDate);  //YYYY-MM-DD
    var end_date = formattedDate(endDate);      //YYYY-MM-DD
    var c_type = 'Noise';                                          // Complaint Type

    // Build the data URL
    URL = "http://data.cityofnewyork.us/resource/erm2-nwe9.json"; // API Access Endpoint
    URL += "?";                                                   // A query parameter name is preceded by the question mark
    URL += "$where=";                                             // Filters to be applied
    URL += "(latitude IS NOT NULL)";                              // Only return records with coordinates
    URL += " AND ";
    URL += "(complaint_type='" + c_type + "')";                    // Desired complaint
    URL += " AND ";
    URL += "(created_date>='" + start_date + "') AND (created_date<='" + end_date + "')"; // Date range
    URL += "&$group=complaint_type,descriptor,latitude,longitude";                        // Fields to group by
    URL += "&$select=descriptor,latitude,longitude,complaint_type";                       // Fields to return
    URL = encodeURI(URL);                                                                 // Encode special characters such as spaces and quotes
}

Когда я использовал startDate = endDate, независимо от даты, результат .json, который я получаю с помощью следующего кода, возвращается пустым.

$.getJSON(URL, function(data)

Однако, если я проверю:

http://data.cityofnewyork.us/resource/erm2-nwe9.json

есть записи, соответствующие конкретной дате. Например, это происходит, когда startDate и endDate равны 2015-11-29.


person pceccon    schedule 30.11.2015    source источник
comment
created_date, вероятно, имеет компонент времени. В этом случае, если начало и конец равны 2015-11-29, вы получите записи, созданные ровно в полночь в этот день.   -  person Rabbit    schedule 01.12.2015


Ответы (1)


@Rabbit кажется правым - возвращаемые данные содержат "created_date" : "2015-11-30T02:14:24", указывающее, что «дата» имеет компонент времени. Измените эти две строки вашего кода:

var start_date = formattedDate(startDate)+"T00:00:00";  //YYYY-MM-DDThh:mm:ss
var end_date = formattedDate(endDate)+"T23:59:59";      //YYYY-MM-DDThh:mm:ss
person Turophile    schedule 01.12.2015