【问题标题】:Change Datetime to ddmmyy in SAS在 SAS 中将日期时间更改为 ddmmyy
【发布时间】:2022-02-21 21:48:14
【问题描述】:

我想将日期变量从 DateTime(例如 11NOV17:06:36:00)更改为显示 11/11/17。信息是 ANYDTDTM40,类型是数字。数据表包含大约 3600 个观测值,它们都需要更改。我尝试了多种组合但没有运气——它们都只给出“********”或“。”作为日期结果。

我认为这将是一项简单的任务,但它花了我几个小时,我仍然无法弄清楚。我是 SAS 新手,所以请在回答时进行描述。

希望您能提供帮助! 谢谢

【问题讨论】:

  • 为什么要按 DMY 顺序显示日期?这会让你一半的观众感到困惑。有一种格式 (E8601DN10.) 将按 YMD 顺序显示日期时间值(秒数),使用该顺序没有人会将 12 月 10 日与 10 月 12 日混淆。
  • @Tom 我想使用 DMY 订单,因为这是我通常使用它的常规方式,并且通常在丹麦这样显示。所以 MDY 真的会让我自己感到困惑。

标签: datetime sas


【解决方案1】:
数据要; 设置有; 日期 = 日期部分(日期时间变量); /* 获取日期时间的日期部分 */ 格式化日期 ddmmyy10。 ; /* 格式为 ddmmyy10。 */ 跑 ;

【讨论】:

  • 所以在执行此操作时,它不会更改任何书面日期。我确实喜欢这样:data kultur3;设置 kultur2 ; SAMPLE_D = datepart(datetime_variable) ;格式化 SAMPLE_D ddmmyy10。 ;跑 ;我在日志中得到以下信息: 注意:变量 datetime_variable 未初始化。注意:缺失值是由于对缺失值执行操作而生成的。每个位置由:(次数)在(行):(列)3508 在 75:10 给出。在 SAMPLE_D 中我只得到点。
【解决方案2】:

好的,更新:这对我有用: SAMPLE_D 是显示日期时间“11NOV17:06:36:00”的日期变量,我希望它没有小时和秒。

data want;
set have;
SAMPLE_D = datepart(SAMPLE_D);
format SAMPLE_D ddmmyy10.; 
run;

现在显示为 2017 年 11 月 11 日。我不敢相信我以前没有找到它。非常感谢

【讨论】:

    【解决方案3】:

    在幕后,所谓的日期和日期时间只是双精度实数。 但是,如果您将格式 date9. 分配给变量并打印它,SAS 将打印 1960 年 1 月之后那么多天的日期。 同样,如果您将格式 datetime19. 分配给一个变量,并在 1960 年 1 月 1 日开始后的那几秒内打印它的日期和时间。

    Sas 有一个从秒计算天数的函数:myDate = datepart(myDateTime);,但也不要忘记格式化变量format myDate date9.;

    另请注意,所有数字格式都类似于<type>length.<decimas>,其中

    • <type> 可以是 datepercent
    • length,唯一的强制性部分是字符的最大长度和
    • <decimals> 是分数的小数位数

    因此格式为1. 的数字将显示为12、...或9。如果负数太大而无法显示为1位,则会显示为溢出:#

    【讨论】:

    • 好的,谢谢你的澄清。我真正想要的是删除日期中的秒数并写不同的日期。
    • 这个网站,通过投票来表达我们的感谢 :) 这也有助于读者更轻松地找到相关答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多