日期計算 |
答題得分者是:Mickey
|
may
一般會員 發表:32 回覆:26 積分:11 註冊:2003-02-11 發送簡訊給我 |
請問各位高手以下的功能如何以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 發送簡訊給我 |
引言: 請問各位高手以下的功能如何以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 發送簡訊給我 |
除了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 發送簡訊給我 |
嗨 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 發送簡訊給我 |
引言: 嗨 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 樂趣多 ! /* |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |