7

進行中の 4gl の月の最終日を取得するにはどうすればよいですか?

4

10 に答える 10

13
/* the last day of this month is one day less than the first day of next month
 *
 * so add one month to the first day of this month and then subtract one day.
 *
 */

function lastDay returns date ( input d as date ):

  return add-interval( date( month( d ), 1, year( d )), 1, "month" ) - 1.

end.
于 2012-06-19T07:39:36.833 に答える
1
DEF VAR dt-ref          AS DATE     NO-UNDO.

DEF VAR dt-end-of-month AS DATE     NO-UNDO.

ASSIGN dt-ref = DATE(2,12,2012)

    .

ASSIGN dt-ref          = dt-ref + 33

       dt-end-of-month = DATE(MONTH(dt-ref),1,YEAR(dt-ref)) - 1.
于 2012-08-09T14:15:16.423 に答える
1

プラットフォームに「間隔」がない場合 - これも同様に機能します。

DEFINE VARIABLE start-date      AS DATE         NO-UNDO.
DEFINE VARIABLE end-of-month    AS DATE         NO-UNDO.

ASSIGN
    start-date = DATE(2, 15, 2012)
    .

ASSIGN
    end-of-month = DATE(MONTH(start-date), 20, YEAR(start-date)) + 15
    end-of-month = end-of-month - DAY(end-of-month)
    .
于 2012-06-19T13:23:21.490 に答える
0

最も簡単な方法は、ADD-INTERVAL 関数を使用することです。

ldEndDate = ADD-INTERVAL(ldBeginDate, 1, "months") - 1.
于 2014-07-01T07:44:31.347 に答える
0

これはすべきです。

DEFINE VARIABLE InputDate           AS DATE        NO-UNDO.
DEFINE VARIABLE OutputDate          AS DATE        NO-UNDO.

IF MONTH(InputDate) = 12 THEN
    ASSIGN OutputDate = DATE(1,1,(YEAR(InputDate) + 1 ) ) - 1 .
ELSE 
    ASSIGN OutputDate = DATE((MONTH(InputDate) + 1 ), 1,YEAR(InputDate) ) - 1.
于 2018-04-06T11:55:04.423 に答える
0
PROCEDURE getEndOfMonth:
    DEFINE INPUT PARAMETER lv-date AS DATE.
    DEFINE OUTPUT PARAMETER lv-monthEnd AS DATE.

    lv-monthEnd = DATE(MONTH(lv-date), 31, YEAR(lv-date)) NO-ERROR.
    IF lv-monthEnd = ? THEN DO:
        lv-monthEnd = DATE(MONTH(lv-date), 30, YEAR(lv-date)) NO-ERROR.            
        IF lv-monthEnd = ? THEN DO:
            lv-monthEnd = DATE(MONTH(lv-date), 29, YEAR(lv-date)) NO-ERROR.            
            IF lv-monthEnd = ? THEN
                lv-monthEnd = DATE(MONTH(lv-date), 28, YEAR(lv-date)) NO-ERROR.
        END.
    END. 
END.
于 2012-06-19T04:29:50.107 に答える