楼主: 13128718871
2567 7

[问答] SAS因为时间格式不对从数据库取不了数的问题 [推广有奖]

  • 1关注
  • 0粉丝

小学生

35%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
32 点
帖子
5
精华
0
在线时间
7 小时
注册时间
2016-10-19
最后登录
2017-3-2

楼主
13128718871 发表于 2017-2-28 20:37:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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'

二维码

扫码加我 拉你入群

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

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

关键词:数据库 Distinct proc sql datetime Between null between create 数据库 表达式

回帖推荐

lovexialulu 发表于7楼  查看完整内容

字符转数值 :input((&td.||":00:00:00"),datetime20.)

沙发
lovexialulu 发表于 2017-3-1 08:24:22 来自手机
最后一句 宏变量td加双引号 试试“td”||

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

板凳
lovexialulu 发表于 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  试试。

报纸
13128718871 发表于 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  用了这个还是不行,而且格式好像不对,可以看看图片。

地板
13128718871 发表于 2017-3-1 13:08:18 来自手机
后面的时分秒变成了绿色字体 image0.jpg image1.jpg

7
lovexialulu 发表于 2017-3-1 14:21:09
字符转数值 :input((&td.||":00:00:00"),datetime20.)<=t1.create_time<=input((&td||":24:00:00"),datetime20.)

8
13128718871 发表于 2017-3-1 16:43:21
lovexialulu 发表于 2017-3-1 14:21
字符转数值 :input((&td.||":00:00:00"),datetime20.)
谢谢!
问题解决了,就是如果表太大的话,用SAS查询取数太慢了,跑了接近2小时

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 21:37