全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2476 7
2017-02-28
SAS因为时间格式不对从数据库取不了数的问题,以下是代码:
数据库create_time 是datetime20. 格式,但是td 是字符型,所以一直报错,between 的表达式有不同数据类型的组件。
该怎么连接TD和时分秒呢????????
%let in_sdate='22FEB2017'd;
%let in_edate='22FEB2017'd;
data _null_;
call symput('start',&in_sdate);
call symput('stop',&in_edate);
run;
%macro SA_test;
%do day=&start %to &stop;
data _null_;
call symput('td',"'"||put(&day,date12.)||"'");
run;
proc sql;
create table raw as select * from(
SELECT distinct t1.*
FROM abc.v_SUMMARY t1
WHERE t1.create_time between &td||':00:00:00' and &td||':24:00:00'

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-3-1 08:24:22
最后一句 宏变量td加双引号 试试“td”||
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-1 09:17:48
lovexialulu 发表于 2017-3-1 08:24
最后一句 宏变量td加双引号 试试“td”||
好像还是报错。。。。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-1 12:09:47
1. 用%put &td.; 看下出来的 &td 是什么,有没有空格 有空格就要先去掉再连接;

2.  t1.create_time 是datetime20. 格式= 格式是format出来的? 那么t1.create_time 是数值型变量 ;
你后面的 &td||':00:00:00' 是字符型的, 也要转化为数值型的。

3. where "&td"||':00:00:00'dt<=t1.create_time <= "&td"||':24:00:00'dt  试试。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-1 13:06:13
lovexialulu 发表于 2017-3-1 12:09
1. 用%put &td.; 看下出来的 &td 是什么,有没有空格 有空格就要先去掉再连接;

2.  t1.create_time 是d ...
谢谢你的帮忙,&td 是'22FEB2017', 应该没有问题。
&td||':00:00:00'  怎么转成数值型??
"&td"||':00:00:00'dt  用了这个还是不行,而且格式好像不对,可以看看图片。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-1 13:08:18
后面的时分秒变成了绿色字体 image0.jpg image1.jpg
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群