sas加载到Teradata日期格式

问题描述:

我在将SAS日期加载到Teradata时遇到问题。 SAS中的日期格式为'01Jan2017'D,加载Teradata中的日期后会显示一个类似23050的数字字符串,但不是日期格式。我在加载之前使用了put函数来更改SAS中的格式,并且在Teradata中加载了我使用的日期格式化函数之后,它们都没有工作。sas加载到Teradata日期格式

有没有人有解决方案?

非常感谢您的回答!

+0

尝试它没有put功能。除非日期字段实际上不是日期,否则我通常不必做任何特殊的加载SAS日期。当然,我想这取决于您使用何种方法加载数据 –

+1

您可以发表您如何创建SAS变量以及如何将其加载到Teradata中的详细示例?保持它可以用来重现问题的最小例子。 – Tom

您是否在使用SAS /访问Teradata?如果是这样,它应该自动将变量定义为Teradata中的日期。让我们在SAS中做一个小表。请注意,附加一个有效的SAS日期格式对于SAS了解您的变量具有日期值至关重要。

data have ; 
    mydate = '01JAN2017'd; 
    format mydate date9. ; 
run; 

现在让我们将其上传到新的teradata表。

libname td teradata ..... ; 
data td.mytable ; 
    set have; 
run; 

现在让我们回过头来看看它里面有什么。

proc print data=td.mytable; 
run; 

现在,如果你已经加载大量数据到Teradata和值看起来像自1960年1月1日天的整数,这是SAS内部存储如何日期,那么它就是一个简单的计算在Teradata将其转换为日期。只需将其添加回'1960-01-01'即可。尝试在TD服务器上运行此查询。

select DATE '2017-01-01' date1, date '1960-01-01' + 20820 date2 

DATE1和DATE2都应该是相同的。