c# 中SQLite根据周、月、年时间查询统计
在C#中使用SQLite进行按周、月、年时间查询并统计数据,可以使用SQLite的strftime
函数来格式化日期,并使用GROUP BY
子句来分组数据。以下是一个示例代码,假设我们有一个名为events
的表,它有一个名为event_date
的日期时间列,我们要统计每周、每月、每年的事件数量。
using System;
using System.Data.SQLite; // 引用SQLite库
class Program
{
static void Main()
{
string connectionString = "Data Source=your_database.db; Version=3;";
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
// 按周统计
string sqlWeek = @"SELECT strftime('%Y-%m-%d', event_date) AS week_starting, COUNT(*)
FROM events
GROUP BY strftime('%Y-%m-%d', event_date)";
// 按月统计
string sqlMonth = @"SELECT strftime('%Y-%m-%d', event_date) AS month_starting, COUNT(*)
FROM events
GROUP BY strftime('%Y-%m', event_date)";
// 按年统计
string sqlYear = @"SELECT strftime('%Y-%m-%d', event_date) AS year_starting, COUNT(*)
FROM events
GROUP BY strftime('%Y', event_date)";
// 执行SQL查询(此处仅示例按周查询,需要根据需求替换为上面定义的变量)
using (var command = new SQLiteCommand(sqlWeek, connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"{reader["week_starting"]}: {reader["COUNT"]}");
}
}
}
}
}
}
在这个示例中,strftime('%Y-%m-%d', event_date)
用于获取日期时间字段event_date
的年、月、日,然后根据这个值进行分组。GROUP BY
子句确保了每个唯一的年、月、日(周)的开始都会被计算为一个分组,并且相应的计数会被统计。
请根据实际情况修改数据库连接字符串和查询语句中的表名以及列名。
评论已关闭