我正在尝试连接两个字段。我想显示日期中的月份和年份。
在cats函数之外单独使用时,这两个函数可以正确返回结果。
示例:2019年2月14日
MONTH(APP.SUBMITTEDON)返回2
YEAR(APP.SUBMITTEDON)返回2019
但是当我尝试将它们连接在一起时,如下所示,它返回./。而不是2/2019。
CATS(MONTH(APP.SUBMITTEDON),'/',YEAR(APP.SUBMITTEDON))为MONTH_YEAR
有想法吗?
完整代码是:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div class="mole" id="mole1">
<div class="left_ear"></div>
<div class="right_ear"></div>
</div>
<div class="mole" id="mole2">
<div class="left_ear"></div>
<div class="right_ear"></div>
</div>
<div class="mole" id="mole3">
<div class="left_ear"></div>
<div class="right_ear"></div>
</div>
答案 0 :(得分:0)
月份和年份函数返回INT
您需要字符
put(month(APP.SUBMITTEDON),z2.)
或使用monyy格式。将日期显示更改为月份年份。
答案 1 :(得分:0)
您可以利用这是一个SAS日期并使用它。
proc sql;
create table COUNTS AS
select distinct COUNT.APP_ID AS COUNT
, put(datepart(app.submittedon), yymms10.) AS MONTH_YEAR
from APPLICANT
GROUP BY MONTH_YEAR;
quit;
编辑:已修改以处理数据时间变量。
答案 2 :(得分:0)
该功能组合是正确的。您还有其他事情未在您的问题中列出:
创建一些示例数据:
data have;
do date='31jan2019'd to '1feb2019'd;
output;
end;
run;
使用cats()
,month()
和year()
测试针对它的基本查询:
proc sql ;
create table counts as
select date,
month(date) as month,
year(date) as year,
cats(month(date),'/',year(date)) as month_year1,
put(date,yymms7.) as month_year2
put(date,yymmn6.) as month_year3
from have
;
quit;
我还以其他一些方式使用各种格式将日期变量表示为月/年。
最后,在同一SQL查询中同时使用distinct
子句和group by
子句是一个非常糟糕的主意。请仔细检查您打算在此处执行的操作,因为这样看来,查询可能无法给出预期的结果,并且很难确定其意图。
答案 3 :(得分:0)
CATS()函数将使用分配给MISSING
选项的字符来缺少数字值。您可以将缺少的选项更改为空格,然后句点将不会出现。
但是从对其他一些答案的评论来看,您似乎真正的问题是您正在处理DATETIME变量而不是DATE变量。 SAS将DATE值存储为自1960年以来的天数,而DATETIME值存储为秒数。如果以秒而不是天为单位给出数字,则MONTH()和YEAR()之类的功能将无法正常工作。
另外,由于SAS已经具有可以为您返回该字符串的格式,因此也无需提取月份和年份并将其粘贴回去。例如,您可能要使用MONYY
格式(或DTMONYY
作为日期时间值)。
create table COUNTS AS
select put(submittedon,dtmonyy.) as month_year
, count( distinct APP_ID) AS COUNT
from APP
GROUP BY MONTH_YEAR
;
请注意,您可能希望使用将YEAR放在MONTH之前的格式,以便新字符变量的值能够正确排序。
create table COUNTS AS
select substr(put(datepart(submittedon),yymmdds10.),1,7) as month_year
, count( distinct APP_ID) AS COUNT
from APP
GROUP BY MONTH_YEAR
;