【问题标题】:sas load into Teradata Date formatsas 加载到 Teradata 日期格式
【发布时间】:2017-07-01 16:26:36
【问题描述】:

将 SAS 日期加载到 Teradata 时遇到问题。 SAS 中的日期格式为 '01Jan2017'D,加载 teradata 中的日期后会显示一串数字,如 23050,但不是日期格式。我在加载之前使用了 put 函数来更改 SAS 中的格式,并且在加载之后我在 Teradata 中使用了 cast date 格式函数,但它们都不起作用。

有人有解决办法吗?

非常感谢您的回答!

【问题讨论】:

  • 不带put函数试试。我通常不需要做任何特殊的事情来加载 SAS 日期,除非日期字段实际上不是日期。当然,我想这取决于您使用什么方法来加载数据
  • 您能否发布有关如何创建 SAS 变量以及如何将其加载到 Teradata 中的详细示例?将其保留为可用于重现问题的最小示例。

标签: date sas format loading teradata


【解决方案1】:

您是否使用 SAS/Access to 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 应该相同。

【讨论】:

    猜你喜欢
    • 2015-10-15
    • 2017-05-26
    • 2012-05-11
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 2014-12-01
    • 2021-04-30
    • 2013-01-11
    相关资源
    最近更新 更多