2018年3月27日火曜日

日付・時間・日時の書き方




例えば、2018/03/27という日付値を作りたい時、
以下のように書かれる方も多いと思います。(私もそうですが)

data DT1;
   format x date.;
   x = input('2018/03/27',yymmdd10.);
run;


ですが、もっと簡単に日付値(と時間値・日時値)を作ることが出来ます。




日付値を作る

「'ddmmmyyyy'd」 という書式で日付値を作ることが出来ます。

data DT1;
    format x date.;
    x = '27mar2018'd;
run;




時間値を作る

「'hh:mm:ss.s't」 という書式で時間値を作ることが出来ます。

data DT2;
    format x y z time.;
    x = '23:05't;
    y = '23:05:10't;
    z = '11:05:10pm't;
run;




日時値を作る

「'ddmmmyyyy:hh:mm:ss.s'dt」 という書式で日時値を作ることが出来ます。

data DT3;
    format x y z datetime.;
    x = '27mar2018:23:05'dt;
    y = '27mar2018:23:05:10'dt;
    z = '27mar2018:11:05:10pm'dt;
run;



時間値と日時値で「am/pm」が指定できるのは知らなかったなぁ、常識なのかな。
また一歩SASマスターに近づいた。


2 件のコメント:

  1. こんにちは。いつも参考にさせて頂いています。
    そもそもの質問で申し訳ないのですが、SAS日付値は、数値なのか文字値なのかがよくわかりません…。
    日付計算するときは、もちろん数値だと思うのですが、formatによっては文字値になったりしますか…?SASの出力形式にある形で表す日付は数値で、ない場合は文字値として表すのでしょうか…
    理解不足で申し訳ありませんが、教えて頂けますと幸いです。

    返信削除
    返信
    1. こんにちは。いつもありがとうございます。
      まず以下の記事「SASにおける日付,時間,日時の概念について」を見ていただくと理解が深まるかもしれません。
      https://sas-boubi.blogspot.com/2015/01/sas.html

      で、SAS日付値の実態は、数値型の変数に数値が格納されていて、それに日付を表すフォーマットを被せて、私たちが目で見て何日かわかるようにしています。

      一方、文字型の変数に「2023/04/27」のように値が格納されている場合、それは日付計算などに使用できないただの文字値です。

      かんなさんのご質問の意図通りの回答となっていますでしょうか。

      削除