我使用DataTables.net在我的laravel项目中渲染数据。现在我遇到了问题。 在几列中,我在dd.mm.yyyy H:i中有数据。我还使用DataTables.net select inputs filter
我的列排序按预期进行(单击表标题)。问题是选择输入用ex:
填充31.12.2014 08:12
现在我想要的是过滤器会将这些列排序为日期(而不是日期时间)。因为如果我的表有100行,这意味着在具有日期时间值的字段下有100个选择选项。我希望它们按日期忽略时间进行分组。
任何解决方案?
答案 0 :(得分:0)
您可以尝试一些解决方案。
我不知道您的查询设置如何,但您可以在那里添加一个选择并在查询中考虑差异,并仅返回其日期部分。
...->select(DB::raw('DISTINCT DATE(DATE_ADD(your_date_column, INTERVAL x HOUR)) AS your_date_column'))
其中your_date_column
是您要查找的日期列的名称,x
是要更改的小时数,如果您落后,则可以是负值。这将返回数据库中显示的唯一日期的集合,这些日期会被小时数抵消。
另一个解决方案是遍历结果集并将它们设置为日期。碳将使这相当容易。
foreach($results as $result) {
$date = \Carbon::createFromTimeStamp($result->your_date_column);
$date->addHours($hoursToAdd);
$result->your_date_column = $date->toDateString();
}
答案 1 :(得分:0)
这种类型的选择允许您只选择字段的固定部分,而不是按您选择的部分进行分组。因此,如果你只需要日期字段中的前10个字符,就可以像这样选择它。
SELECT SUBSTRING('date',1,10) AS trimmed_date
FROM table
GROUP BY trimmed_date;
这会将信息作为trimmed_date返回。如果你仍然想要约会,你可以这样做。
SELECT SUBSTRING('date',1,10)
FROM table
GROUP BY SUBSTRING('date',1,10);
答案 2 :(得分:0)
从数据库中提取日期/时间数据作为unix时间戳,应该类似于13249141986.在创建dataTable时,请使用该列的渲染器。这是一个提示:
var table = $('#example').DataTable( {
"data": dataSet, // in my case I'm building using data from a variable
"columns": [
{ "title": "Name" },
{ "title": "Modified",
"render": function (data, type, full, meta) {
return type === 'display' ? jQuery.datepicker.formatDate('M dd, yy', new Date(1000 * data)) : data;
}
}
]
} );
当渲染渲染器进行显示时,我将其解析为可读的东西,否则我只是返回原始秒。这应该可以帮到你。