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

统计当日6:00至次日6:00价格总和的代码实现疑问

不用分支逻辑,一段代码搞定跨天时段统计

嘿,不用写两个分支逻辑!咱们用一段简洁的代码就能搞定这个统计需求,不管你的程序是在当天6:00-24:00运行,还是次日00:01-6:00运行,都能精准计算目标24小时窗口的价格总和。

核心思路

我们不需要判断当前处于哪个时段,而是直接根据当前时间算出目标统计窗口的起始和结束时间:

  • 如果当前时间≥6:00,统计窗口是「今日6:00 → 明日6:00」
  • 如果当前时间<6:00,统计窗口是「昨日6:00 → 今日6:00」

可以用一行代码确定基准日期,再基于基准日期生成统一的时段范围,完全避免分支判断。

代码实现(C# + SQL)

var now = DateTime.Now;
// 确定基准日期:当前时间≥6点则取今日,否则取昨日
var baseDate = now.Hour >= 6 ? now.Date : now.Date.AddDays(-1);
// 生成统计时段:基准日6:00 到 基准日+1天的6:00
var startTime = baseDate.AddHours(6);
var endTime = baseDate.AddDays(1).AddHours(6);

// 执行参数化SQL查询(务必用参数化,避免SQL注入)
var sqlQuery = @"SELECT SUM(Price) AS TotalPrice 
                 FROM YourTableName 
                 WHERE DateTimeColumn BETWEEN @StartTime AND @EndTime";

// 示例:用SqlCommand执行查询(根据你的ORM/数据库工具调整)
// using (var conn = new SqlConnection(yourConnectionString))
// {
//     conn.Open();
//     using (var cmd = new SqlCommand(sqlQuery, conn))
//     {
//         cmd.Parameters.AddWithValue("@StartTime", startTime);
//         cmd.Parameters.AddWithValue("@EndTime", endTime);
//         var totalPrice = cmd.ExecuteScalar();
//         // 处理统计结果
//     }
// }

为什么这能行?

这段代码的逻辑是先锁定统计窗口的基准日,再基于基准日生成固定的6:00到次日6:00范围,不管当前时间是在窗口的前半段还是后半段,都能自动匹配到正确的24小时区间,完全不需要分分支处理,逻辑更简洁,也减少了出错的可能。

另外,一定要用参数化查询,这是防止SQL注入的最佳实践,也能避免日期格式带来的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:00:29