检索两个日期之间的记录总和(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。
首先需要两个命令。
- 所有记录
- 日期记录
您需要确保使用文本框发送的日期格式正确。一般格式为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子句…我希望它对你有用,如果我没有帮到你,我很抱歉