列に日付があるデータベースが"BIRTH_DATE"
あります(たとえば2015-06-26
)。DataTables
ユーザー向けの情報を表示するために使用します。番号範囲検索をしたい。しかし、DataTables
プラグインを使用していてタイプ フィルターColumnFilter
を使用しようとすると、number-range
機能しません。
from
またはフィールドに値を入力するとすぐにto
、結果がないことがわかります。20150626
しかし、同じ列に、そのフィルターが示すように日付が書かれている行がある場合。私が理解しているように、問題は-
私の番号の真ん中にあるシンボルです。-
フィルターが記号を無視するようにするにはどうすればよいですか?
Number-Range フィルタ コード:
function fnCreateCharRangeInput() {
th.html(_fnRangeLabelPart(0));
var sFromId = sTableId + 'range_from_' + i;
var from = $('<input type="text" class="number_range_filter" id="' + sFromId + '" rel="' + i + '"/>');
th.append(from);
th.append(_fnRangeLabelPart(1));
var sToId = sTableId + 'range_to_' + i;
var to = $('<input type="text" class="number_range_filter" id="' + sToId + '" rel="' + i + '"/>');
th.append(to);
th.append(_fnRangeLabelPart(2));
th.wrapInner('<span class="filterColumn filter_number_range" />');
var index = i;
aiCustomSearch_Indexes.push(i);
//------------start range filtering function
/* Custom filtering function which will filter data in column four between two values
* Author: Allan Jardine, Modified by Jovan Popovic
*/
$.fn.dataTableExt.afnFiltering.push(
function (oSettings, aData, iDataIndex) {
var iMin = document.getElementById(sFromId).value * 1;
var iMax = document.getElementById(sToId).value * 1;
var iValue = aData[index] == "-" ? 0 : aData[index] * 1;
if (iMin == "" && iMax == "") {
return true;
}
else if (iMin == "" && iValue < iMax) {
return true;
}
else if (iMin < iValue && "" == iMax) {
return true;
}
else if (iMin < iValue && iValue < iMax) {
return true;
}
return false;
}
);
//------------end range filtering function
$('#' + sFromId + ',#' + sToId, th).keyup(function () {
var iMin = document.getElementById(sFromId).value * 1;
var iMax = document.getElementById(sToId).value * 1;
if (iMin != 0 && iMax != 0 && iMin > iMax)
return;
oTable.fnDraw();
});
}
編集:2015-06-29
または、誰かが私を助けて、このフィルターが入力フォーマットを無視するようにするだけで、次のような単純なアクションを実行できます。
Select * from table where BIRTH_DATE between '2010' and '2011-12'
そのようなクエリはSQLで正常に機能するためです。