将SAS IFN()、HOUR()和MINUTE()转换为PostgreSQL [已关闭]

3qpi33ja  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(138)

已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

5天前关闭。
此帖子已在4天前编辑并提交审核,无法重新打开帖子:

需要详细信息或澄清添加详细信息并通过editing this post澄清问题。

Improve this question

(hour(date_column ) * 4)
+ ifn(minute(date_column ) = 0, 0
     , ifn(minute(date_column ) <= 15, 1
          , ifn(minute(date_column ) <= 30, 2
               , ifn(minute(date_column ) <= 45, 3, 4))))
 as date_no

在PostgreSQL中,这些函数的等效项是什么?
我试图提取价值的基础上15分钟的间隔在一个小时。

ars1skjm

ars1skjm1#

如果你能更详细地解释一下你的目标和当前的逻辑,会有所帮助,但现在看起来这样就足够了:

select extract('hours' from date_column) * 4 
    + ceil(extract('minutes' from date_column) / 15) as date_no
from your_table;
  1. extract()在PostgreSQL中的作用与hour()minute()在SAS中的作用相同。
    1.您可以使用与in SAS完全相同的方法来使用CASE,但是没有对应的IFN()
  2. CEIL()both中的工作原理相同,因此您也可以缩短SAS版本,替换所有的IFN
    1.您可以有效地对日期/时间进行分组,因此您可以查看date_bin()。在SAS中,通过使用INTNX()或普通的ROUND()12),也可以达到类似的效果。
    Demo

相关问题