sql - SAS 日期时间 22.3 到 yymmddn8
问题描述
我正在使用 SAS 来引入位于 Microsoft SQL Server 中的表并将其转储到 Hadoop 中。我面临的问题是数据变量:INSURANCE_DATE.Week_Start_Date 是 Datetime 22.3,但需要转换为 yymmddn8。我带来了 3 年的数据,入口代码片段:
%let three_year_start=%sysfunc(putn(%sysfunc (intnx(year,%sysfunc(today()), -3)), yymmddn8.)); /* */ %let three_year_end=%sysfunc(putn(%sysfunc(today()), yymmddn8.)); /今天是/
工作正常,但我不确定如何正确格式化 INSURANCE_DATE.Week_Start_Date 以便我的 where 子句起作用。
%let three_year_start=%sysfunc(putn(%sysfunc (
intnx(year,%sysfunc(today()), -3)), yymmddn8.)); /* */
%let three_year_end=%sysfunc(putn(%sysfunc(today()), yymmddn8.)); /*is
today*/
proc SQL;
create table BA_INS as
SELECT
format (INSURANCE_DATE.Week_Start_Date) yymmdd10.) as Week_Start_Date
FROM
dbo.DIM_INSURANCE_DATE
WHERE
(dbo.DIM_INSURANCE_DATE.Week_Start_Date
between &three_year_start. and &three_year_end.);
quit;
我需要一个解决方案来说明如何将该 datatime 22.3 格式转换为 yymmdd10。在 proc sql 查询中
解决方案
如果从 SQL Server 提取的源值在 SAS 中呈现为SAS 日期时间值,并且您希望从 SAS 推送到 Hadoop 的目标值与SAS 日期值一样,则可以使用datepart
SAS 中的函数。
proc sql;
create table HADOOP.TARGET_TABLE as
select
…
, datepart(Week_Start_Date) as Week_Start_Date format=date9.
…
from
SQLSRV.SOURCE_TABLE
…
;
我认为实际的日期格式并不重要,只是它是 SAS 日期格式之一。SAS/Connect 引擎将检查要定位的 SAS 列,查看日期格式并自动进行任何必要的调整,以将 SAS 日期值作为日期值插入目标系统。
推荐阅读
- r - 替换 r 中的字符串模式
- google-apps-script - 包括已更改单元格的整行
- node.js - 运行示例测试时出现赛普拉斯错误。赛普拉斯崩溃并显示错误 ECONNRESET
- computational-geometry - 如何从 vtkMarchingSquares 获得定向轮廓
- cognos - Cognos 图 - 根据不同维度的值指定样式
- rabbitmq - Spring streamBridge 在启动时创建rabbitmq队列
- android - Android ViewModel 正在泄漏
- xamarin.forms - Xamarin.Forms 中的设置列表
- sql - Sql需要对列进行多次求和并将结果水平拆分为一行
- python-3.x - Django 单元测试句柄 PermissionDenied