Problem Note 59546: A DS2 timestamp or time column in a thread program loses precision
When a DS2 program specifies the variable type of TIMESTAMP on a new column in a thread program and that column is output in the data program, the precision of that column is not preserved. It instead falls back to the default precision for a TIMESTAMP.
To circumvent the problem, duplicate the declaration of the timestamp variable from the thread program in the data program. The sample code on the Full Code tab illustrates this.
The precision of a TIME or TIMESTAMP variable type is now the DS2-defined default, which is six digits after the decimal point, rather than using the default for a given database.
Operating System and Release Information
SAS System | Base SAS | z/OS | 9.4 TS1M3 | 9.4 TS1M4 |
z/OS 64-bit | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft® Windows® for x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows 8 Enterprise 32-bit | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows 8 Enterprise x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows 8 Pro 32-bit | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows 8 Pro x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows 8.1 Enterprise 32-bit | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows 8.1 Enterprise x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows 8.1 Pro 32-bit | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows 8.1 Pro x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows 10 | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows Server 2008 | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows Server 2008 R2 | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows Server 2008 for x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows Server 2012 Datacenter | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows Server 2012 R2 Datacenter | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows Server 2012 R2 Std | 9.4 TS1M3 | 9.4 TS1M4 |
Microsoft Windows Server 2012 Std | 9.4 TS1M3 | 9.4 TS1M4 |
Windows 7 Enterprise 32 bit | 9.4 TS1M3 | 9.4 TS1M4 |
Windows 7 Enterprise x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Windows 7 Home Premium 32 bit | 9.4 TS1M3 | 9.4 TS1M4 |
Windows 7 Home Premium x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Windows 7 Professional 32 bit | 9.4 TS1M3 | 9.4 TS1M4 |
Windows 7 Professional x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Windows 7 Ultimate 32 bit | 9.4 TS1M3 | 9.4 TS1M4 |
Windows 7 Ultimate x64 | 9.4 TS1M3 | 9.4 TS1M4 |
64-bit Enabled AIX | 9.4 TS1M3 | 9.4 TS1M4 |
64-bit Enabled Solaris | 9.4 TS1M3 | 9.4 TS1M4 |
HP-UX IPF | 9.4 TS1M3 | 9.4 TS1M4 |
Linux for x64 | 9.4 TS1M3 | 9.4 TS1M4 |
Solaris for x64 | 9.4 TS1M3 | 9.4 TS1M4 |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.
This code assumes that you have established a connection to Hadoop with a LIBNAME statement, submitted the location of the configuration and JAR files, and have a data set stored there.
A thread program named T creates a TIMESTAMP column named Col2. The thread program is used in the data program. If the line of code with the asterisk is omitted, the loss of precision occurs. With that line of code, the precision is maintained.
proc ds2 indb=no;
thread t/overwrite=yes;
dcl timestamp(9) col2;
method run();
set yourHadoopDataSet;
col2 = timestamp"2016-03-12 08:00:00.91";
end;
endthread;
run;
quit;
proc ds2 indb=no;
data dblib.bde_out (overwrite=yes);
dcl timestamp(9) col2;
dcl thread t t1;
method run();
set from t1;
/* This line of code must be added to prevent the precision problem */
* col2 = timestamp"2016-03-12 08:00:00.91";
put col2=;
end;
enddata;
run;
quit;
Type: | Problem Note |
Priority: | medium |
Date Modified: | 2016-12-16 15:54:50 |
Date Created: | 2016-12-16 12:29:13 |