【发布时间】:2019-08-25 23:08:05
【问题描述】:
我认为我的编码有问题。我猜它不是按日期过滤的。请帮忙
SQL 代码:
SELECT
CONVERT(char(80), i.InvDate,3) AS InvDate,
i.InvoiceNo,
i.EmployerCode,
i.TaxAmount + i.SubTotal AS Amount,
'' AS Payment,
pd.GivenName
FROM
dbo.Invoice i
INNER JOIN
dbo.PatientDetails pd ON (pd.MedicalRecordID = i.MedicalRecordID)
C#代码:
SqlCommand objCmd = new SqlCommand("SELECT CONVERT(char(80), i.InvDate,3) AS InvDate,
i.InvoiceNo,
i.EmployerCode,
i.TaxAmount + i.SubTotal AS Amount,
'' AS Payment,
pd.GivenName
FROM
dbo.Invoice i
INNER JOIN dbo.PatientDetails pd ON (pd.MedicalRecordID = i.MedicalRecordID)
WHERE (InvDate >= CONVERT(datetime, '" + dtpFrom.Text + "', 105 ))
AND (InvDate <= CONVERT(datetime, '" + dtpTo.Text + "', 105))," , objConn);
这就是我想要实现的目标:
这是我得到的:
在我被踢出这里之前。我会做一些修改。
编辑:
日期时间为 105 格式 (dd-mm-yyyy)
WHERE (InvDate >= CONVERT(datetime, '" + dtpFrom.Text + "', 105 ))
AND (InvDate <= CONVERT(datetime, '" + dtpTo.Text + "', 105))
这应该从特定日期中选择。例如:2012 年 10 月 11 日至 2012 年 10 月 15 日。
即使没有 DateTimepicker,输出也不会显示“GivenName”
【问题讨论】:
-
你的 VB 代码看起来像 C# 代码
-
你的SQL代码和你的VB代码有什么关系?如果它们是相同的,则您的 SQL 代码没有 VB 代码中存在的 WHERE 子句,
-
你并没有真正解释你真正得到的输出有什么错误....想详细说明一下吗?只是在我们身上放两张截图,让我们从两个输出中找出答案,并不是很有帮助....另外:
from和to在这些示例中使用的 值 是什么? -
请尽量避免将日期视为字符串。使用
SqlParameters 将日期时间值传递给SQL Server(而不是作为字符串传递并尝试使用CONVERT将它们返回到datetimes),我对你为什么将其格式化为SELECT中的固定宽度、80 个字符宽的列。 -
在你的循环中放置一个断点,在那里你会检查查询结果,并使用检查 dr.GetString(dr.GetOrdinal("GivenName")) 返回的内容。如果您仍然卡住,您可以编辑您的问题并添加您正在使用的代码,以显示您如何从查询结果中获取数据。您应该能够按照一个简单的示例(例如 one on MSDN for SqlDataReader)来找出哪里出错了。
标签: c# visual-studio-2010 sql-server-2008