看板 Soft_Job 關於我們 聯絡資訊
如有一個起的變數是2013/04/01 則迄的值就為2013/07/01 但如遇到2013/03/31 則迄的值就要為2013/06/30 目前遇到困擾是31日及2月底日期的判斷 造成程式寫法要寫很多if寫法 不知各位高手有沒有比較簡單的寫法 就可寫出 謝謝 IF MONTH(s_date) >= 10 THEN LET e_date=MDY(MONTH(s_date)-9,DAY(s_date),YEAR(s_date)+1) ELSE LET e_date=MDY(MONTH(s_date)+3,DAY(s_date),YEAR(s_date)) END IF IF e_date IS NULL THEN IF MONTH(s_date) >= 9 THEN LET e_date=MDY(MONTH(s_date)-8,DAY(s_date),YEAR(s_date)+1) ELSE LET e_date=MDY(MONTH(s_date)+4,DAY(s_date),YEAR(s_date)) END IF LET e_date = MDY(MONTH(e_date),1,YEAR(e_date)) - 1 END IF -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.22.197.149
ken1325:你用什麼語言 04/01 15:32
ppking:古老的4gl語言 04/01 15:34
gmoz:弄成長度365的陣列 index+90 XDDD 04/01 15:46
sweet00914:switch case? 04/01 15:46
gmoz:原來不是固定天數 (默.. 04/01 15:46
sweet00914:用函式:函式名稱:cl_days 04/01 15:54
ppking:s大,此語言並無cl_day上函數可用,謝謝 04/01 16:02
sweet00914:4GL的語言那麼多~PowerBuilder、Delphi和INFORMOX 04/01 16:19
sweet00914:請問你用的是哪一種呢?0.0? 04/01 16:19
ppking:Informix,有mdy(),day(),month(),year()相關日期函數可用 04/01 16:29
ppking:我目前寫如下,感覺還是不怎麼好: 04/01 16:31
ppking:IF MONTH(s_date) >= 10 THEN 04/01 16:31
ppking:LET e_date=MDY(MONTH(s_date)-9,DAY(s_date),YEAR(s_d)+1) 04/01 16:32
ppking:ELSE 04/01 16:32
ppking:LET e_date=MDY(MONTH(s_date)+3,DAY(s_date),YEAR(s_dat)) 04/01 16:33
ppking:END IF 04/01 16:33
ppking:IF e_date IS NULL THEN 04/01 16:34
ppking:IF MONTH(s_date) >= 9 THEN 04/01 16:34
ppking:LET e_date=MDY(MONTH(s_date)-8,DAY(s_date),YEAR(s_d)+1) 04/01 16:35
ppking:ELSE 04/01 16:35
ppking:LET e_date=MDY(MONTH(s_date)+4,DAY(s_date),YEAR(s_dat)) 04/01 16:35
ppking:END IF 04/01 16:36
ppking:LET e_date = MDY(MONTH(e_date),1,YEAR(e_date)) - 1 04/01 16:36
ppking:END IF 04/01 16:36
sweet00914:你可以修改文章~不用推文~orz~~~OTZ~~~ORZ 04/01 16:37
flyang2000:有日期檢核的函數嗎?!有的話月份+3後檢核該日,不合理 04/01 17:39
flyang2000:-1日再檢核一次直到日期檢核正確 04/01 17:39
ppking:沒有日期檢核函數,它直接丟給null值 04/01 17:47
ppking:對喔,忘了可直接改文章內容即可,不好意思 04/01 17:52
alan3100:while迴圈每次-1DAY直MDY到回傳值不為null? 04/01 20:02
ppking:樓上a大,腦中默跑你的方法,覺得很難捉到3月後同日期 04/01 20:48
※ 編輯: ppking 來自: 36.236.34.149 (04/01 20:53) ※ 編輯: ppking 來自: 36.236.34.149 (04/01 20:58)
onear:一般老系統這類客製的日期處理函數應該是不用自己造輪子吧? 04/01 21:08
ppking:我是製造業的MIS,公司用的ERP是自己寫出來,此段是用於報表 04/01 21:12
ppking:程式,預設輸入起迄日期條件是3個月 04/01 21:13
lovdkkkk:3/1~6/1, 3/31~6/30 嗎? 那 31天要怎麼 mapping 到 30天? 04/01 21:48
googoo1102:2/28加三個月是要5/28 or 5/31 ?? 04/01 22:52
Arminius:mm=(old_mm+3)%12; yy+=(old_mm+3)/12; 再檢查一下dd>30 04/02 00:44
Arminius:還有mm==2 時的狀況.... 04/02 00:46
googoo1102:mm=9, (9+3) % 12 = 0 喔 04/02 00:56
pooznn:好奇怪的需求 一般是抓月第一天或最後一天 不然就用90天算! 04/02 02:13
luciferii:想問一下,Informix的ADD_MONTHS不能用嗎? 04/02 02:19
yauhh:老闆要的三個月是以月為基礎算還是以日(90日)為基礎? 04/02 08:04
yauhh:另外是不另外寫個判斷閏年,卻想要簡單寫出來,很奇怪唷 04/02 08:04
ppking:老闆是要以月為基礎,而2/28加3個月就為5/28,因傳統製造業的 04/02 08:41
ppking:老闆都很單純,加3個月就是月份加3,月份內天數變化如28,29, 04/02 08:43
ppking:30,31,他認為電腦就會排除不正確的日期 04/02 08:45
ppking:樓上l大,沒用過Informix的ADD_MONTHS函數,如何使用? 04/02 08:47
ppking:樓上lovdkkkk大,的確是如起3/31,則迄就要為6/30 04/02 08:49
yauhh:那假如是1/31過三個月就自動是4/30對嗎? 04/02 11:32
yauhh:MDY(MONTH(sd),DAY(sd),YEAR(sd)) + 3 UNITS MONTH行嗎? 04/02 12:09
overxxx:先寫一個function輸入年、月,輸出該月的最後一天,會較簡單 04/02 12:47
overxxx:算出來的該月最後一日再跟原先的日取MINIMUM 04/02 12:50
overxxx:至於這個function只需考慮二月閏年的情形,其他都固定 04/02 12:51
overxxx:然後四年一閏,逢百不閏,逢四百要閏->先判斷400倍數->100.. 04/02 12:53
connect:條件區間不要用[<=第三月底],用[<第四月第一天] 04/06 17:23