程序代码如下:
sqlTime = "select SUM(onlineTimeSpan) From T_OnlineTimeSum where ipAddress = :a AND onlineDate BETWEEN :b AND :c";
daSpan = new SQLiteDataAdapter(sqlTime, conn);
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("a", DbType.String));
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("b", DbType.String));
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("c", DbType.String)); daSpan.SelectCommand.Parameters[0].Value = Address;
daSpan.SelectCommand.Parameters[1].Value = startDate.Date.ToString("yyyy-MM-dd");
daSpan.SelectCommand.Parameters[2].Value = endDate.Date.ToString("yyyy-MM-dd");
这样写查询时间天数是一位的准确的比如 2009年12月4号 到 2009年12月6号 如下:
select SUM(TimeSpan) From TimeSum where Address = 'xxxx' AND lineDate BETWEEN '2009-12-4' AND '2009-12-6'
但是如果时间跨度为 2009年12月14号 到 2009年12月16号时候这样写就会产生问题只能合计到 14,15号2天的值,
但是如果改为如下代码:
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("b", DbType.Date));
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("c", DbType.Date));
daSpan.SelectCommand.Parameters[1].Value = startDate.Date;
daSpan.SelectCommand.Parameters[2].Value = endDate.Date;
就计算正确,但是如果这样写 的话当时间为 2009年12月4号 到 2009年12月6号 时候就合计不正确 有没有遇到的阿,请给解释一下阿。
我觉得不应该啊。
sqlTime = "select SUM(onlineTimeSpan) From T_OnlineTimeSum where ipAddress = :a AND onlineDate BETWEEN :b AND :c";
daSpan = new SQLiteDataAdapter(sqlTime, conn);
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("a", DbType.String));
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("b", DbType.String));
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("c", DbType.String)); daSpan.SelectCommand.Parameters[0].Value = Address;
daSpan.SelectCommand.Parameters[1].Value = startDate.Date.ToString("yyyy-MM-dd");
daSpan.SelectCommand.Parameters[2].Value = endDate.Date.ToString("yyyy-MM-dd");
这样写查询时间天数是一位的准确的比如 2009年12月4号 到 2009年12月6号 如下:
select SUM(TimeSpan) From TimeSum where Address = 'xxxx' AND lineDate BETWEEN '2009-12-4' AND '2009-12-6'
但是如果时间跨度为 2009年12月14号 到 2009年12月16号时候这样写就会产生问题只能合计到 14,15号2天的值,
但是如果改为如下代码:
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("b", DbType.Date));
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("c", DbType.Date));
daSpan.SelectCommand.Parameters[1].Value = startDate.Date;
daSpan.SelectCommand.Parameters[2].Value = endDate.Date;
就计算正确,但是如果这样写 的话当时间为 2009年12月4号 到 2009年12月6号 时候就合计不正确 有没有遇到的阿,请给解释一下阿。
我觉得不应该啊。
这样只能查到12.4和12.5两天的,要是把结束日期也查到,要多加一天,between '2009-12-4' AND '2009-12-7'
DateTime startTime = new DateTime();
startTime = Convert.ToDateTime(txtstartTime.Text);
画面上是一个textBox 然后我在判断它符合日期格式后 进行转换的,不知道这样做 会不会产生影响。
sqlTime = "select SUM(onlineTimeSpan) From T_OnlineTimeSum where ipAddress = :a AND onlineDate BETWEEN :b AND :c";
daSpan = new SQLiteDataAdapter(sqlTime, conn);
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("a", DbType.String));
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("b", DbType.Date));
daSpan.SelectCommand.Parameters.Add(new SQLiteParameter("c", DbType.Date));
daSpan.SelectCommand.Parameters[0].Value = Address;
daSpan.SelectCommand.Parameters[1].Value = startDate.Date;
daSpan.SelectCommand.Parameters[2].Value = endDate.Date;
发现当时间 2009-12-2~2009-12-5 的时候结果错误
如果测试时间为 2009-12-12~2009-12-15 的时候结果正确。
请问 谁知道为什么啊。