Csharp: 請假輸入兩個日期:(只考慮最多相差一個月)对于不同月份的数据考虑月份数据分界

/// <summary>
        /// 請假輸入兩個日期:(只考慮最多相差一個月)对于不同月份的数据考虑月份数据分界
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {

            DateTime enterStar,enterEnd,stardate1, endate1, stardate2, enddate2;
            int betweenyear, betweenmonth, betweenday;
            enterStar=dateTimePicker1.Value;
            enterEnd=dateTimePicker2.Value;
            TimeSpan ts = enterEnd - enterStar;
            betweenyear = TimeSpanExtensions.GetYears(ts);
            betweenmonth = TimeSpanExtensions.GetMonths(ts);
            betweenday = ts.Days;
            //betweenday=enterStar.CompareTo(enterEnd);
            if (betweenday > 0)
            {
                if (betweenyear == 0 && betweenmonth == 1)//同年不同月
                {
                    stardate1 = dateTimePicker1.Value;//月初
                    dateTimePicker3.Value = stardate1;
                    endate1 = new DateTime(stardate1.Year, stardate1.Month, DateTime.DaysInMonth(stardate1.Year, stardate1.Month));//DaysInMonth 指定年月中的天數
                    dateTimePicker4.Value = endate1;//月末
                    stardate2 = new DateTime(enterEnd.Year, enterEnd.Month, 1);
                    dateTimePicker5.Value = stardate2;//月初
                    enddate2 = enterEnd;
                    dateTimePicker6.Value = enddate2;//月末

                }
                if (betweenyear == 1 && betweenmonth == 1)//不同年不同月
                {
    		        stardate1=enterStar;//月初
                    dateTimePicker3.Value = stardate1;
		            endate1=new DateTime(stardate1.Year, stardate1.Month, DateTime.DaysInMonth(stardate1.Year, stardate1.Month));//月末
                    dateTimePicker4.Value = endate1;
                    stardate2=new DateTime(enterEnd.Year, enterEnd.Month, 1); //月初
                    dateTimePicker5.Value = stardate2;
                    enddate2=enterEnd;//月末
                    dateTimePicker6.Value = enddate2;

                }
                if (betweenyear == 0 && betweenmonth == 0)//同年同月
                {
                    stardate1 = enterStar;//月初
                    dateTimePicker3.Value = stardate1;
                    endate1 = enterEnd;//月末
                    dateTimePicker4.Value = endate1;
                }
            }

        }

---sql 請假輸入兩個日期:(只考慮最多相差一個月)对于不同月份的数据考虑月份数据分界
---1.要判斷是否同一年同一月,不同年,不同月要分開顯示兩組不同月日期之間數據
---2.同年不同月,要分開顯示兩組不同月日期之間數據
---3.同年同月不用分組顯示
declare @enterStar datetime,@enterEnd datetime,@stardate1 datetime,@endate1 datetime,@stardate2 datetime,@enddate2 datetime
declare @betweenyear int,@betweenmonth int,@betweenday int
set @enterStar='2012-12-05'
set @enterEnd='2013-01-25'
select @betweenyear=DATEDIFF(year, @enterStar, @enterEnd)
SELECT @betweenmonth =DATEDIFF(month, @enterStar, @enterEnd)
SELECT @betweenday=DATEDIFF(day, @enterStar, @enterEnd)
if (@betweenday>0)
begin
	if(@betweenyear=0 and @betweenmonth=1)
	begin
   		select @stardate1=@enterStar--Dateadd(mm,datediff(mm,0,@enterStar),0) --月初
		select @endate1=Dateadd(ms,-3,dateadd(mm,datediff(m,0,@enterStar)+1,0)) --月末
   		select @stardate2=Dateadd(mm,datediff(mm,0,@enterEnd),0) --月初
		select @enddate2=@enterEnd--Dateadd(ms,-3,dateadd(mm,datediff(m,0,@enterEnd)+1,0)) --月末
		select @stardate1,@endate1,@stardate2,@enddate2
	end
	if(@betweenyear=1 and @betweenmonth=1)
	begin

   		select @stardate1=@enterStar--Dateadd(mm,datediff(mm,0,@enterStar),0) --月初
		select @endate1=Dateadd(ms,-3,dateadd(mm,datediff(m,0,@enterStar)+1,0)) --月末
   		select @stardate2=Dateadd(mm,datediff(mm,0,@enterEnd),0) --月初
		select @enddate2=@enterEnd--Dateadd(ms,-3,dateadd(mm,datediff(m,0,@enterEnd)+1,0)) --月末
 		select @stardate1,@endate1,@stardate2,@enddate2
	end
	if(@betweenyear=0 and @betweenmonth=0)
	begin
		select @stardate1=@enterStar
		select @endate1=@enterEnd
 		select @stardate1,@endate1
	end

end
时间: 2024-12-21 21:42:39

Csharp: 請假輸入兩個日期:(只考慮最多相差一個月)对于不同月份的数据考虑月份数据分界的相关文章

Sql:請假跨月份問題,或跨年份問題 日期部分边界

---請假跨月份問題,或跨年份問題 日期部分边界 declare @sart datetime,@end datetime,@d int,@s1 datetime,@e1 datetime,@s2 datetime,@e2 datetime,@t varchar(50),@t2 varchar(50),@I int set @sart='2012-11-18 14:56:12' set @end='2012-12-08 14:56:12' --set @I=DATEDIFF(ms,@sart,@

如何實現在網頁中輸入的數據保存到數據庫中

问题描述 在vs2005中我創建了一個頁面,上面有幾個文本框,一個綁定了數據庫的gridview控件,現想實現把輸入在文本框中的內容顯示在gridview數據表格中.請各位高手指點如何用C#代碼實現(可增加控件) 解决方案 解决方案二:C#高手一般不来VC版面.解决方案三:HTML代码<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits=&q

Asp.net Textbox 輸入時間產生table

问题描述 各位大大您好:小女子有個想法,想在2textbox輸入開始跟結束時間然後產生一個table,請教如何建立呢,感謝大大的幫忙~~ 解决方案 解决方案二:DateTimedtStart=newDateTime(2015,01,01);DateTimedtEnd=newDateTime(2015,01,11);vardays=(dtEnd-dtStart).Days;Tabletb=newTable();for(vari=0;i<days;i++){TableRowrow;if(i%7==0

怎消除textbox之前輸入了儲存的值?

问题描述 按textbox會看到之前輸入的值怎消除textbox之前輸入了儲存的值?謝謝 解决方案 解决方案二:在IE中设置一下,并把USERDATA清空解决方案三:可以弄一個button消除textbox之前輸入了儲存的值嗎?解决方案四:1.可以通过设置浏览器来做到:internet选项-->内容-->自动完成设置-->表单去掉勾,TextBox就会不保存历史记录2.在ASP.NET里面设置TextBox的AutoCompleteType的属性.autocomplete=false解决

關於限制輸入

问题描述 importjava.io.*;publicclassEcho{publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderbuf=newBufferedReader(newInputStreamReader(System.in));System.out.print("請輸入一列文字:");Stringtext=buf.readLine();System.out.println("您輸入的文字:

ajax-遞歸的方法來處理多層級的地址輸入

问题描述 遞歸的方法來處理多層級的地址輸入 如何用遞歸的方法來處理多層級的地址輸入的問題?或者誰有處理層級的地址資料,發一下給我. 解决方案 你说的地址指的是什么地址,ip地址还是?

lotus notes 中怎樣實現在一個新文檔中打開一個舊的文檔??

问题描述 請高手幫忙!!lotusnotes中怎樣實現在一個新文檔中打開一個舊的文檔?? 解决方案 解决方案二:dimwsasnewNotesuiWorkSpacesetdocOld=ws.CurrentDocument.document.ParentDatabase.GetDocumentByUNID("OldDocumentUNID")callws.EditDocument(true,docOld)解决方案三:描述不够清楚啊.解决方案四:就是在一個已經打開的form中設置一個按鈕

select-同样的sql只有查询的日期不同但执行速度相差很多

问题描述 同样的sql只有查询的日期不同但执行速度相差很多 SELECT messagestatusreceivernamemain.registnosendernameto_char(send_time) as send_timemobileriskcode from prplflsmssend ps left join prplflsmslog pl on pl.smssendid=ps.id prplflmaininfo main where trim(smstype)<>'' and

数据库表中日期记录为2009-04-23的形式,如何用sql语句查询2009年4月份的所有记录,请帮帮我!!谢谢!!

问题描述 数据库表中日期记录为2009-04-23的形式,如何用sql语句查询2009年4月份的所有记录,请帮帮我!!谢谢!! 解决方案 解决方案二:补充一句我需要HQL语句解决方案三:fromClasswheredatebetweendate'2009-04-01'anddate'2009-04-30'解决方案四:引用2楼endlesspass的回复: fromClasswheredatebetweendate'2009-04-01'anddate'2009-04-30' 就只有这一种思路了吗