时间戳是由日期和时间组成的一串数字串,时间戳的格式为YYYYMMDDHHMISS,比如2016.12.30 09:56:20转换成时间戳就是20161230095620。常用的转换方法如下:
下面一个例子是将销售订单的创建日期和时间转换成时间戳,
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
.
|
可以通过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
|
下图CET是时区,
当然也可以通过IB_CONVERT_FROM_TIMESTAMP将时间戳转换为日期,时间。
以上。