如何在vb2010范围内获得月份

时间:2013-08-02 11:11:27

标签: vb.net

我只是不知道该怎么做。

我设计了一个使用MS Access作为其数据库的程序。我有一个月和年的字段(字段数据类型是文本),用户可以在其中注册详细信息。该计划将注册用户选择的月份和年份,例如月份= 9月,年份= 2011年。

我现在的问题是如何选择一系列数据供用户使用月份和年份作为标准查看,例如用户可能希望查看(2011年9月至2013年7月)的数据范围。

我甚至无法弄清楚如何尝试。帮助将受到高度赞赏。

4 个答案:

答案 0 :(得分:1)

也许您可以更改应用程序逻辑,将月份和年份存储为各自的数字而不是文本,并将字段数据类型更改为数字。

然后你可以从它们构造一个DateTime对象,例如9月将是9,你可以使用如下代码:

var startDate = new DateTime(year, month, 1); // get year and month as integers from database, uses the first as the date
var endDate = new DateTime(year, month, 10); // change the date but keeps the month and year the same
var endDate2 = startDate.AddMonths(1); // adds 1 month to the date

或者,您可以尝试使用日历控件来允许用户选择两个日期,而不是从多个字段构建它。根据您的使用情况,这可以通过多种方式实现,例如在ASP.Net或WPF中,您可以使用两个日历控件,只需使用他们的SelectedDate属性作为您的范围。

答案 1 :(得分:1)

范围是从起点到终点。对于起点,您可以自动添加月份的第一个月。对于端点而言,它更复杂,因为没有固定端点。你可以做的是:

  1. 编写一个数组,其中包含每个月的日期(例如30或31)。除了Febrauary之外,还有一种修复模式。
  2. 对于Febrauary使用所选年份来检查是闰年的年份。如果不添加28,则添加29。
  3. 之后为SQL创建日期字符串: 开始日期1.9.2011。为同一个人做同样的事。
  4. 之后,我认为您可以在SQL查询中使用关键字between

答案 2 :(得分:1)

您可以假设所有内容都是在每个月的第一天输入的。我会使用查询将信息提取到数据库。

select * from [tablename] where DateSerial([colYear], [colMonth], 1) between DateSerial([fromYear], [fromMonth], 1) and DateSerial([toYear], [toMonth], 1)

答案 3 :(得分:0)

在这个问题中有一些方法可以做到这一点:

首先。 过滤日期范围 ,假设您使用'07-12-2012'

之类的日期

2011年9月至2013年7月

 Where DateColumn > '09-01-2011' and DateColumn < '07-31-2013'

OR

指定日期和年份

 Where month(DateColumn)='1' and year(DateColumn)='2016'

注意: 有很多方法可以做到这一点。

您可以根据所需的输出操作您的陈述。