Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Processing Internal Data →  Date and Time Processing →  Character-Like Date Fields and Time Fields →  Accessing Character-Like Date Fields and Time Fields 

Accessing Character-Like Date Fields and Time Fields Numerically

Numeric access to character-like date fields and time fields exploits the fact that the conversion of the types d and t to numeric values produces an integer number of days or seconds. This applies particularly when using character-like date fields and time fields in numeric calculations, where these fields are converted to the corresponding calculation type. This enables differences to be calculated or values to be added or subtracted from character-like date fields or time fields. None of the other arithmetic operations are generally advisable here. To avoid unexpected results from these calculations, you must verify that the content of the date or time fields is valid.

Other versions: 7.31 | 7.40 | 7.54


Example

The following calculations provide the current day of the year, plus the hour, minutes, and seconds of the current time. The date and time are provided by a time stamp.

DATA: date TYPE d,
      time        TYPE t,
      time_stamp     TYPE timestamp,
      day    TYPE i,
      hour   TYPE i,
      minute TYPE i,
      second      TYPE i,
      first_day   TYPE d.

GET TIME STAMP FIELD time_stamp.
CONVERT TIME STAMP time_stamp TIME ZONE sy-zonlo
        INTO DATE date TIME time.

first_day = date(4) && '0101'.
day       = date - first_day + 1.
second    = ( time - t`000000` ).
hour      = second DIV 3600.
second    = second - hour * 3600.
minute    = second DIV 60.
second    = second - minute * 60.


Example

The following calculation produces the day of the week for a date field date containing any valid date. 1 means Monday, 2 means Tuesday, and so on.

day = ( 5 + date  MOD 7 ) MOD 7  + 1.


Example

The following calculations provides the last day of the previous month.

DATA date TYPE d.

date = sy-datlo.
date+6(2) = '01'.
date     = date - 1.