我的数据库中有一个名为" Month"的列。我想要做的是在两个月之间过滤表格。这方面的例子是3月到6月。我的代码有效,但只能按字母顺序工作
string strquery = "select * from tbl_DR_data ";
string strq2 = "where";
if (DropDownList6.SelectedItem.Text != "All" && DropDownList8.SelectedItem.Text != "All") {
string month1 = DropDownList6.SelectedItem.Text.ToString();
string month2 = DropDownList8.SelectedItem.Text.ToString();
strq2 = strq2 + "[Month] BETWEEN'" + month1 + "'AND'" + month2 + "'";
}
DropDownList6 = March
和DropDownList8 = June
时。 gridview中没有任何东西出现我绑定但是如果交换它们,那么DDL6 = 6月和DDL8 = 3月它可以工作:S
是否有一个解决方案,以便我可以按照月份的顺序排列月份,而不是按字母顺序排列
答案 0 :(得分:1)
为什么你真的把数月存储在数据库中作为字符串?如果你遵循这条道路,请相信我你甚至会遇到更严重的问题。他们将是一个调试的地狱。您始终可以从任何日期或日期时间列值获取月份部分。
答案 1 :(得分:0)
尝试此代码,希望这是您所期望的
SET @FromMonth = 'March'
SET @ToMonth = 'June'
SELECT
*
FROM
tbl_DR_data
WHERE
DATEPART(mm,CAST([Month]+ ' 1900' AS DATETIME)) >= DATEPART(mm,CAST(@FromMonth+ ' 1900' AS DATETIME))
AND DATEPART(mm,CAST([Month]+ ' 1900' AS DATETIME)) <= DATEPART(mm,CAST(@ToMonth+ ' 1900' AS DATETIME))
答案 2 :(得分:0)
This is the MSDN Syntax for BETWEEN
test_expression [ NOT ] BETWEEN begin_expression AND end_expression
When DropDownList6 = March and DropDownList8 = June
时为什么没有结果?
使用上述值,您的查询就像
[Month] BETWEEN 'March' AND 'June'
不幸的是,当您使用 BETWEEN, begin_expression should be less than or equal to end_expression
进行过滤时。在您的情况下,由于您已在数据库中将月份(名称)存储为字符串, March comes after June in alphabetical order
,因此上述条件返回false且无结果。
This is a fiddle example same as yours with no results.
您可以使用各种方法从日期/日期时间字段中获取月份。在sql server中,您可以使用;
//Month NUMBER
month(datefield) as month_Number
//Month NAME
datename(month,datefield) as month_Name
只是为了给你设计最糟糕的一面。 Just check the results of 按where month between 'april' and 'may'
过滤。
您的结果包括:August, December, February, January, July, June, March
<强>解决方案:强>
由于您没有完整的日期,我想最好更新您的数据库,如下所示,并将[month]的数据类型更改为int类型;
update yourTable
set [month] = case [month] when 'January' then 1
when 'February' then 2
...
when 'December' then 12 end
现在将[month]的数据类型更改为int类型,然后将代码中的月份数字传递为
[month] BETWEEN 3 and 6
另外,请尝试避免使用Month
等关键字作为字段名称。
答案 3 :(得分:0)
我不确定您的数据库设计是什么,甚至不确定Month Fields数据类型是什么,我同意其他第一个&amp;最重要的是,这不是一个好的设计,因为我不能想到我只能根据月份搜索的情况。这应该是一个完整的日期字段。
如果您向我们提供有关此功能的简要信息,例如您想要使用它的话,它可以让我们更好地了解它。目的
请不要把我当作评论家......关于你的项目的更多细节可以帮助我们更好地理解和...推荐解决方案可能是我错了,因为我可能无法理解你的问题。
你可以使用漂亮的解决方案,但要考虑前方的道路..