时间戳是由日期和时间组成的一串数字串,时间戳的格式为YYYYMMDDHHMISS,比如2016.12.30 09:56:20转换成时间戳就是20161230095620。常用的转换方法如下:
1, concatenate转换
下面一个例子是将销售订单的创建日期和时间转换成时间戳,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
DATA lv_vbeln TYPE vbeln VALUE '0100001418'. DATA lv_timestamp_string TYPE string. SELECT SINGLE erdat, erzet INTO @DATA(ls_datetime) FROM vbak WHERE vbeln = @lv_vbeln. CONCATENATE ls_datetime-erdat+0(4) ls_datetime-erdat+4(2) ls_datetime-erdat+6(2) ls_datetime-erzet+0(2) ls_datetime-erzet+2(2) ls_datetime-erzet+4(2) INTO lv_timestamp_string. WRITE: ls_datetime-erdat, ls_datetime-erzet, lv_timestamp_string. |
2, CONVERT转换
可以通过convert语句将日期+时间+时区 转变为 时间戳,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
*&---------------------------------------------------------------------* *& Form date_to_timestamp *&---------------------------------------------------------------------* * 日期+时间+时区 转变为 时间戳 *----------------------------------------------------------------------* FORM date_to_timestamp USING i_date LIKE sy-datum i_time LIKE sy-uzeit i_tzone LIKE tzonref-tzone CHANGING o_tstamp LIKE tzonref-tstamps . CONVERT DATE i_date TIME i_time INTO TIME STAMP o_tstamp TIME ZONE i_tzone. CASE sy-subrc. WHEN 8. MESSAGE e000(oo) WITH '时区错'. WHEN 12. MESSAGE e000(oo) WITH '时间戳错误'. WHEN OTHERS. ENDCASE. ENDFORM. "date_to_timestamp |
反过来也可以将时间戳转换为 日期 时间,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
*&---------------------------------------------------------------------* *& Form TIMESTAMP_TO_DATE *&---------------------------------------------------------------------* * 时间戳+时区 转变为 日期和时间 *----------------------------------------------------------------------* FORM timestamp_to_date USING i_tstamp LIKE tzonref-tstamps i_tzone LIKE tzonref-tzone CHANGING o_date LIKE sy-datum o_time LIKE sy-uzeit. DATA: w_tzone LIKE tzonref-tzone. w_tzone = i_tzone. CONVERT TIME STAMP i_tstamp TIME ZONE w_tzone INTO DATE o_date TIME o_time. CASE sy-subrc. WHEN 8. MESSAGE e000(oo) WITH '时区错'. WHEN 12. MESSAGE e000(oo) WITH '时间戳错误'. WHEN OTHERS. ENDCASE. ENDFORM. "TIMESTAMP_TO_DATE |
3, IB_CONVERT_INTO_TIMESTAMP转换
下图CET是时区,
当然也可以通过IB_CONVERT_FROM_TIMESTAMP将时间戳转换为日期,时间。
以上。
发表评论