-
Notifications
You must be signed in to change notification settings - Fork 9
/
sasdatefmt.sas
105 lines (83 loc) · 2.11 KB
/
sasdatefmt.sas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* Specify Oracle user, password and server: */
%let ora_user = tq84;
%let ora_password = secret_garden;
%let ora_server = ora.test.renenyffenegger.ch;
libname tq84_ora oracle
path = &ora_server
user = &ora_user
password = &ora_password
;
proc sql;
/* Create date destintation table in Oracle; */
connect using tq84_ora;
execute by tq84_ora (
create table tq84_append_test (
id number not null primary key,
col_1 varchar2(20) not null,
dt_1 date not null check (dt_1 = trunc(dt_1)),
dt_2 date not null
)
);
quit;
/* Load data into stage table */ ;
data work.tq84_stage;
length
id 8.
col_1 $20.
dt_1 8.
dt_2 8.;
informat dt_1 date9.;
format dt_1 date9.;
informat dt_2 e8601dt.;
format dt_2 datetime20.;
infile datalines dlm=',' dsd;
input id
col_1
dt_1
dt_2;
datalines;
1,one,01sep17,2001-01-01T01:01:01
2,two,02sep17,2002-02-02T02:22:02
3,three,03sep17,2003-03-03T03:03:03
11,eleven,11sep17,2011-11-11T11:11:11
12,twelve,12sep17,2012-12-12T12:12:12
13,thirteen,13sep17,2013-11-13T13:13:13
;
proc sql;
/* Check stage data: */
select * from work.tq84_stage;
quit;
proc sql;
describe table work.tq84_stage;
quit;
/* Transfer data from stage table to Oracle table */
proc append
data=work.tq84_stage
base=tq84_ora.tq84_append_test(
/* use SASDATEFMT to prevent
Variable dt_1 has format 'DATETIME20.'n on the
BASE data set and format 'DATE9.'n on the DATA data set.
*/
sasdatefmt=(
dt_1='date9.'
/* dt_2= ... dt_2 is already a datetime, it needs not be converted ! */
)
) force
;
run;
proc sql;
connect using tq84_ora;
select * from connection to tq84_ora (
select
id,
col_1,
to_char(dt_1, 'dd.mm.yyyy hh24:mi:ss') dt_1,
to_char(dt_2, 'dd.mm.yyyy hh24:mi:ss') dt_2
from
tq84_append_test
);
quit;
proc sql;
connect using tq84_ora;
execute by tq84_ora ( drop table tq84_append_test purge );
quit;