You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法转换日期格式求助:将意大利语缩写字符日期转为指定SAS格式

解决SAS意大利语字符日期转指定格式的问题

先说说你原代码里的几个问题:

  • 语法错误:input(myolddates, ddmmyy10.;)多了个多余的分号,正确写法是input(myolddates, ddmmyy10.)
  • 格式不匹配:你的日期月份是意大利语缩写(giu是意大利语6月),ddmmyy10.只识别英文月份缩写,根本读不进数据,得用对应意大利语的输入格式ITALDDMMYY9.(你的字符日期长度刚好是9位)
  • 输出格式不对:你要的是30JUN2018这种样式,ddmmyy10.会输出30/06/2018,得换成DATE9.格式

给你两种方案,按需选择:

方案1:生成SAS日期数值(带格式显示为目标样式)

如果需要保留SAS日期的数值属性(方便后续日期运算),用这个:

data Test; 
  set input;
  /* 用意大利语日期格式把字符转成SAS日期值 */
  mydates = input(myolddates, ITALDDMMYY9.);
  /* 用DATE9.格式显示,自动输出ddMONyyyy的大写样式 */
  format mydates DATE9.;
run;

方案2:直接生成字符型的目标结果

如果只是需要字符形式的30JUN2018,不需要日期数值,用PUT函数嵌套转换:

data Test; 
  set input;
  /* 先转成日期值,再转成指定格式的字符 */
  mydates_char = put(input(myolddates, ITALDDMMYY9.), DATE9.);
run;

测试后,30-giu-18会转成30JUN2018,30-nov-20转成30NOV2020,完全符合你的需求。

内容的提问来源于stack exchange,提问作者NewUsr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 09:00:57