Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 读取/使用格式YYYYMMDD和;0“;日期字段中的值_Date_Format_Sas - Fatal编程技术网

Date 读取/使用格式YYYYMMDD和;0“;日期字段中的值

Date 读取/使用格式YYYYMMDD和;0“;日期字段中的值,date,format,sas,Date,Format,Sas,我们有一个正在更改的系统提要…它当前是Julian date,正在转换为YYYYMMDD——尽管对于空白值,它们在“0”中进行提要。不知道它的格式是什么 首先,我通过对该记录执行“if XXXfield=0,那么XXXfield=''来删除0,这将返回一个“.”。然后我尝试使用“format XXXfield yymdd8”进行编码。这将为任何带有日期的内容返回空格。我不是创建表,只是读取它……我如何成功地将日期设置为没有“0”的日期“空白值和我可以在SAS中使用的格式(即XXXfield>=X

我们有一个正在更改的系统提要…它当前是Julian date,正在转换为YYYYMMDD——尽管对于空白值,它们在“0”中进行提要。不知道它的格式是什么

首先,我通过对该记录执行“if XXXfield=0,那么XXXfield=''来删除0,这将返回一个“.”。然后我尝试使用“format XXXfield yymdd8”进行编码。这将为任何带有日期的内容返回空格。我不是创建表,只是读取它……我如何成功地将日期设置为没有“0”的日期“空白值和我可以在SAS中使用的格式(即XXXfield>=Xdate)?”??提前感谢您的建议

样本数据(一个空白,4个带值):


根据您下面的评论,
报告日期的格式为
BEST12.

data work.have;
input reporting_date BEST12.;
datalines;
0
20141122
20130604
20130626
20140930
;
run;
因此,让SAS将
报告日期
解释为实际日期的一种方法是将其临时格式化为字符串,然后将其转换为
YYMMDD10.
格式

proc sql;
  create table work.want as
   select input(put(t1.reporting_date, 8.), YYMMDD10.) format=YYMMDDn8. as reporting_date
   from work.have t1;
;
run;
在这种情况下,

  • put
    将其转换为宽度为8个字符的字符串
  • input
    将字符串转换为实际的SAS日期,并且
  • 格式
    将以人类可读的方式显示日期
第三个项目符号是可选的,
format
的值只是许多可用值中的一个。转换还处理值为
0
的行,并将它们转换为缺失(

现在,当您将该列作为SAS日期时,就可以对其进行筛选了:

proc sql;
create table work.filter as
  select t1.reporting_date
  from work.want t1
  where t1.reporting_date > '01JUL2013'd
;
run;

但是,与其采取这些变通办法,不如在将此列读入SAS数据集的作业中更改格式

您希望“0”日期发生什么变化?您是如何将其读入SAS的?这是来自数据库、文本文件还是其他文件?我希望“0”日期最终为空。我是从我们服务器上的SAS数据集读取的。最初,数据是从销售系统推送的,这种格式是他们可以用来发送给我们的格式。@BellyDanceCostumes,一些提示,当您准备发布下一个问题时,请记住。1.站在读者的立场上,确保自己能够理解你的问题。2.确保你的问题中有一个有效的数据集,比如
data work.have我在下面发布的。3.请确保添加到目前为止已尝试的实际代码。这三个选项将帮助您更快地得到答案。谢谢您的建议。我没有使用输入语句,因为我正在从现有数据集中读取记录。我在这个数据集中有超过一百万条记录,所以每次通过输入语句读取每一条记录是不可行的。这是我到目前为止测试这个的代码…它不起作用…所有日期都是空的。它从位于SAS服务器上的数据集中读取数据,直接馈送…无输入,不创建新的数据集。数据测试;设置k.test_日期;如果实际结束日期=0,则实际结束日期=“”;跑数据测试1;集合测试;格式报告日期为yymmdd8。;跑你能运行以下代码吗:procsql;从SASHELP.VCOLUMN t1中选择t1.name、t1.type、t1.format,其中t1.libname='K'和t1.memname='TEST_DATES'和t1.name='ACTUAL_END_DATE';退出跑并将结果发布到注释中。我得到了0行3列的“名称、类型和格式”。它指向右边的libname,数据集名为test_dates,字段名为actual_end_date。
proc sql;
create table work.filter as
  select t1.reporting_date
  from work.want t1
  where t1.reporting_date > '01JUL2013'd
;
run;