You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC 5项目中如何为数据库查询添加日期范围筛选功能

你需要分别修改前端View和后端Controller的代码,步骤如下:

1 前端View代码修改

主要调整DataTable的columnFilter配置,匹配你实际的8列结构,给最后一列日期字段启用日期范围筛选,只需要替换原有columnFilter部分即可:

}).columnFilter({
    "aoColumns": [
        null, // 第0列id:隐藏,无需筛选
        { "type": "text" }, // 第1列Citizenic Request:文本筛选
        { "type": "select" }, // 第2列User:下拉筛选
        { "type": "text" }, // 第3列System Name:文本筛选
        { "type": "text" }, // 第4列Strrequest By User:文本筛选
        null, // 第5列API Name:无需筛选
        null, // 第6列Message:无需筛选
        { "type": "date-range" } // 第7列Date:启用日期范围筛选
    ]
});

修改后日期列头部会出现两个日期选择框,选择范围后请求会自动携带日期参数到后端。

2 后端Controller代码修改

首先引入需要的命名空间:

using System.Globalization;

然后在Tables方法的原有全局搜索逻辑之后,新增日期范围过滤逻辑:

// 原有搜索逻辑
if (!string.IsNullOrEmpty(searchValue))
{
    customerData = customerData.Where(m => (m.citizenic_request == searchValue) || (m.strrequest_byuser == searchValue) || (m.api_request == searchValue));
}

// ========== 新增日期范围筛选逻辑开始 ==========
// 获取第7列(日期列)的搜索参数
var dateSearchVal = Request.Form.GetValues("columns[7][search][value]").FirstOrDefault();
if (!string.IsNullOrWhiteSpace(dateSearchVal))
{
    // 按columnFilter默认的~分隔符拆分起止日期
    var dateRange = dateSearchVal.Split('~', StringSplitOptions.RemoveEmptyEntries);
    if (dateRange.Length == 2)
    {
        // 匹配前端返回的MM/dd/yyyy日期格式
        if (DateTime.TryParseExact(dateRange[0].Trim(), "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime startDt))
        {
            customerData = customerData.Where(x => x.createdAt >= startDt);
        }
        if (DateTime.TryParseExact(dateRange[1].Trim(), "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime endDt))
        {
            // 结束日期加1天,避免createdAt的时间部分导致当天数据被过滤
            customerData = customerData.Where(x => x.createdAt < endDt.AddDays(1));
        }
    }
}
// ========== 新增日期范围筛选逻辑结束 ==========

// 原有统计分页逻辑
recordsTotal = customerData.Count();

注意事项

  • 如果测试发现日期参数分隔符不是~,可以断点查看dateSearchVal的实际值,调整Split方法的分隔符参数即可
  • 如果你的数据库createdAt字段存储的是UTC时间,可根据业务需要调整时区偏移逻辑
  • 日期解析失败的情况下会自动跳过日期筛选,不影响原有功能使用

内容的提问来源于stack exchange,提问作者Pacharanut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:30:05