【问题标题】:SAS SQL : Date compareSAS SQL:日期比较
【发布时间】:2021-12-23 22:20:14
【问题描述】:

您好,我有一个比较 SAS Proc SQL 中的两个日期的问题

-条件-

日期_A(固定):2020-11-08
Date_B : 2020-12-15 或 2020-12-UN => Date_B 可能是 2020-12-UN(未知日)

所以,我所做的是......

Select A.DATE, B.DATE
From A.TABLE, B.TABLE
Where (input(Scan(Date_B,2,'-'),best10.) < input(Scan(Date_A,2,'-',best10.)) or Date_B < Date_A

-首先,如果Date_B's Day是'UN',和'Month'比较,如果不是简单比较..

但是..它不起作用(甚至知道为什么)

还有其他方法吗..?

致以诚挚的问候

【问题讨论】:

  • 今日提示:切换到现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。
  • 您使用的是哪个 dbms?
  • 两个变量都是字符吗?第二个必须是字符,因为其中带有 UN 的字符串不能代表实际日期。但第一个可能是使用 YYMMDD10 显示的具有日期值的数字变量。格式,使它们看起来像您显示的字符串。

标签: sql sas proc-sql


【解决方案1】:

希望这会有所帮助,尽管您的问题可能不够详细...这将按要求比较日期,但不太可能为您提供有用的输出(!)
这假定日期是字符串,给定“UN”元素。

Select case when substr(A.DATE,9)='UN' then substr(A.DATE,1,7)
else A.DATE end as DATE_A
, case when length(calculated DATE_A)=7 then substr(B.DATE,1,7)
else B.DATE end as DATE_B
From A.TABLE, B.TABLE
where calculated DATE_A &lt; calculated DATE_B

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多