全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2131
推到 Plurk!
推到 Facebook!

日期計算

答題得分者是:Mickey
may
一般會員


發表:32
回覆:26
積分:11
註冊:2003-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-07 09:53:25 IP:210.202.xxx.xxx 未訂閱
請問各位高手以下的功能如何以SQL語法完成? 使用者輸入起始及結束日期 (2002/11/10 到 2003/02/12) 程式自動新增以下的起始及結束日期,也就是以每個月作閒隔。 例如第一筆記錄就是以輸入的日期為開始,到當月的最後一天 第二筆記錄就是以第一筆記錄的次月為開始,到當月的最後一天 ... 直到最後一筆記錄就是以輸入的結束日期為結束 1.2002/11/10--2002/11/30 2.2002/12/1--2002/12/31 3.2003/01/01--2003/01/31 4.2003/02/01--2003/02/12
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-07 15:03:17 IP:61.219.xxx.xxx 未訂閱
引言: 請問各位高手以下的功能如何以SQL語法完成? 使用者輸入起始及結束日期 (2002/11/10 到 2003/02/12) 程式自動新增以下的起始及結束日期,也就是以每個月作閒隔。 例如第一筆記錄就是以輸入的日期為開始,到當月的最後一天 第二筆記錄就是以第一筆記錄的次月為開始,到當月的最後一天 ... 直到最後一筆記錄就是以輸入的結束日期為結束 1.2002/11/10--2002/11/30 2.2002/12/1--2002/12/31 3.2003/01/01--2003/01/31 4.2003/02/01--2003/02/12
你必須先說明是何種資料庫,大家才能幫你 >點到為止,有困難再 > /*
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-07 15:50:39 IP:61.218.xxx.xxx 未訂閱
除了Mickey 版主所說的以外    我以MSSQL 為例:    先以Datediff 取得二個日期之間的差(月) datediff(m,'2002/03/01','2002/10/11')    頭、尾的日期都已知    中間的部份,以dateadd(m,i,startDate)       i ---> (日期之差的遞增值)    月底的求法: dateadd(d,-1,dateadd(m,1,startDate))    關鍵的觀念都已告之了,其餘的如 Mickey 版主所言,自己試         發表人 - ddy 於 2003/03/07 15:58:59
may
一般會員


發表:32
回覆:26
積分:11
註冊:2003-02-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-07 17:35:28 IP:210.202.xxx.xxx 未訂閱
嗨 Mickey ,謝謝您的回應,我想我已經完成了,我是使用SQL Server 2000。 DECLARE @S DateTime DECLARE @S1 DateTime DECLARE @D DateTime DECLARE @m4 DateTime DECLARe @CharDate Char(10) SET @S = '2002/08/10' SET @D = '2003/02/12' WHILE (@S <= @D) BEGIN SET @S1 = DateAdd(month,1,@S) Set @CharDate=convert (char(4),year(@S1)) '/' convert (char(2),Month(@S1)) '/01' set @m4=DateAdd(day,-1,convert(datetime,@CharDate)) /*當月的最後一天*/ print @s if @m4>=@D begin set @m4=@D end else begin set @m4=dateadd(day,-1,convert(datetime,@CharDate)) end print @m4 set @s=convert(datetime,@CharDate) End
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-09 14:13:51 IP:61.13.xxx.xxx 未訂閱
引言: 嗨 Mickey ,謝謝您的回應,我想我已經完成了,我是使用SQL Server 2000。 DECLARE @S DateTime DECLARE @S1 DateTime DECLARE @D DateTime DECLARE @m4 DateTime DECLARe @CharDate Char(10) SET @S = '2002/08/10' SET @D = '2003/02/12' WHILE (@S <= @D) BEGIN SET @S1 = DateAdd(month,1,@S) Set @CharDate=convert (char(4),year(@S1)) '/' convert (char(2),Month(@S1)) '/01' set @m4=DateAdd(day,-1,convert(datetime,@CharDate)) /*當月的最後一天*/ print @s if @m4>=@D begin set @m4=@D end else begin set @m4=dateadd(day,-1,convert(datetime,@CharDate)) end print @m4 set @s=convert(datetime,@CharDate) End
恭喜,自己 Coding 樂趣多 ! /*
系統時間:2024-07-01 20:10:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!