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

时间:2014-06-24 17:47:11

标签: c# asp.net sql

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

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

日期格式为DD / MM / YYYY。

3 个答案:

答案 0 :(得分:0)

如果你指的是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);

至于你的数据库,这就是我所知道的。是你的。我不确定它使用的日历格式。

答案 1 :(得分:0)

只要数据库中的日期存储为日期,txtdate.text就可以工作。我想你想要得到某个领域的总和,

    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子句...我希望它适合你,如果我没有任何帮助,我很抱歉

答案 2 :(得分:0)

首先你需要两个命令。

  1. For All Records
  2. 日期记录
  3. 您需要确保使用文本框发送的日期格式正确。通常格式为yyyy-MM-dd。

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