My97DatePicker_限制开始日期和结束日期在同一个月

本文介绍了一种按月分表的方法,并通过JavaScript实现了时间控件的优化,确保查询时间限定在同一月份内,提高了大型数据集的查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PS:最近使用springmvc+ibatis+mysql做项目的后台,涉及到大量统计页面.

其中一个表已有了400多万行数据,优化sql和增加索引后,效率仍然低下,并且数据还处于几何增长中.

几经折腾决定按月分表,月底把数据转移到上个月份命名的表中,当月表则不加后缀:即table_1303,table_1304,table(当月)...

之前大量的统计页面都使用了My97DatePicker时间控件来做查询.

因为按月加表是动态的,所以需要在查询过程中做限制,查询的起始时间和结束时间是同一个月.

网上搜索没有现成的,便自己写了一个js,这里备忘,也方便需要的人查找.

 

最后再附上简单的流程图.

碰到个问题 使用form:input时,控件中的$dp.$D便不能用,页面报错.猜测为在表单中clientID不一致了,

但不解.

 

 

 

<td class="label" width="10%">开始时间:</td>
<td width="10%"><input class="Wdate" type='text'
	id="beginTime" name="beginTime" value='${beginTime}'
onFocus="WdatePicker({minDate:'2013-04-01',maxDate:'#F{$dp.$D(\'endTime\')||\'%y-%M-%d\'}'})" />
</td>
<td width="10%"></td>
<td class="label" width="10%">结束时间:</td>
<td width="10%"><input class="Wdate" type='text'
	id='endTime' name='endTime' value='${endTime}'
	onFocus="var date=limitMonthDate(2);WdatePicker({minDate:'#F{$dp.$D(\'beginTime\')||\'2013-04-01\'}',maxDate:date})" />
</td>

 

 控件的ofFocus事件中实现了以下功能:

        开始结束日期不得小于数据库表的创建时间(2013-04-01),且不得大于当天;

        结束日期不得小于起始日期,且不得大于当月;

       

 js的limitMonthDate()方法功能:

       限制两个时间为同一个月份.

 

 

<script language="javascript">
	//限制开始和结束时间为同一个月
	function limitMonthDate(e) {
		var DateString;
		if (e == 2) {
			var beginDate = $dp.$("beginTime").value;
			if (beginDate != "" && beginDate != null) {
				var limitDate = new Date(beginDate);
				limitDate.setDate(new Date(limitDate.getFullYear(), limitDate
						.getMonth() + 1, 0).getDate()); //获取此月份的天数
				DateString = limitDate.getFullYear() + '-'
						+ (limitDate.getMonth() + 1) + '-'
						+ limitDate.getDate();
				return DateString;
			}
		}
		if (e == 1) {
			var endDate = $dp.$("endTime").value;
			if (endDate != "" && endDate != null) {
				var limitDate = new Date(endDate);
				limitDate.setDate("1"); //设置闲置时间为月初
				DateString = limitDate.getFullYear() + '-'
						+ (limitDate.getMonth() + 1) + '-'
						+ limitDate.getDate();
				return DateString;
			}
		}
		
	}
</script>



 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值