检索两个日期之间的记录总和(c# .net, sql)

本文关键字:net 记录 sql 之间 两个 日期 检索 | 更新日期: 2023-09-27 18:10:03

我有两个文本框,用户可以在其中通过日历选择器输入日期、开始日期和结束日期。我想检索这两个日期之间的记录的总和,但是,当我运行我的代码,它似乎给日期之间不同的奇怪的总和计数,总和是完全错误的。一个问题是日期在数据库中并不都是相同的格式,第二个问题是,如果没有选择日期,我想要整个数据库中记录的总和。我如何修改下面的SQL语句来检索正确的结果?

using (OleDbCommand com = new OleDbCommand("SELECT * FROM JournalEntries WHERE JournalDate BETWEEN'" + txtStartDate.Text + "' and '" + txtEndDate.Text + "'", con))

日期格式为DD/MM/YYYY。

检索两个日期之间的记录总和(c# .net, sql)

首先需要两个命令。

  1. 所有记录
  2. 日期记录

您需要确保使用文本框发送的日期格式正确。一般格式为yyyy-MM-dd。

另外,Date的数据库列应该是Date类型,而不是varchar或其他类型。这将有助于保持所有存储日期的一致性。

如果您指的是DateTimePicker,这里有一些代码将告诉您两个DateTimePickers的值之间的差异以及表示差异的格式化字符串。

// dTP = DateTimePicker
DateTime startTime = dTPStart.Value;
DateTime endTime = dTPEnd.Value;
TimeSpan diff = endTime - startTime;
String difStr = string.Format("{0:00}:{1:00}:{2:00}", (int)difStr.TotalHours, difStr.Minutes, difStr.Seconds);
关于你的数据库,我知道的就这些。它的你的。我不确定它使用什么日历格式。

只要数据库中的日期存储为date、txtdate。文本应该可以。我猜你是想求某个字段的和,那么

    using (OleDbCommand com = new OleDbCommand("SELECT Sum(your field) As MYSUM FROM JournalEntries WHERE JournalDate between (your dates) Group by (your field)), conn)

,假设你没有选择任何日期,你需要以某种方式知道用户没有选择日期,然后使用if else来确定执行哪个查询,当然第二个查询将没有where子句…我希望它对你有用,如果我没有帮到你,我很抱歉