首页 > 解决方案 > SAP HANA 将 YYYYWW 转换为 MM/DD/YYYY

问题描述

要求是从表 S990 中的字段 SPWOC 中获取星期一和星期日。我想不出任何可以让我提取这些信息的功能组合。该表字段的示例输出是 202135。所以我试图从 2021 年的第 35 周开始获得星期一和星期日。任何关于从哪里开始的想法将不胜感激!

标签: sqlhana

解决方案


仅从表中无法确定是使用 ISO 周计算(即 SAP 标准默认值)还是系统使用非 ISO 周计算方法。

要了解这一点,您需要与了解 SAP 系统如何配置的人交谈。

但是对于问题的范围,让我们假设您使用的系统使用 ISO 方法,其中周从星期一开始,到星期日结束。

即便如此,以封闭形式计算第 X 周的星期一和星期日的日期也并不简单。该TO_DATE()函数不支持从YYYYWW到的直接转换YYYY-MM-DD

因此,除了编写自己的函数来执行正确的日历算术之外,我只认为以下选项是一种可行的方法:

  1. 确保 HANA 表_SYS_BIC.M_TIME_DIMENSION已加载您感兴趣的时间范围内的数据(日级别)。这可以通过HANA Studio 或 Web IDE 中的生成时间数据功能来完成。如果需要,请查看文档以获取详细信息。

  2. 使用时间维度表,您可以获得各种预先计算的日期表示和转换,包括CALWEEKDAY_OF_WEEK

有了它,您可以像这样运行 SELECT:

select 
     year
   , week
   , date_sql
   , to_nvarchar( date_sql, 'DAY')
from 
    "_SYS_BI"."M_TIME_DIMENSION" 
where 
    calweek = '202135'
and day_of_week in (0, 6);


YEAR    WEEK    DATE_SQL    TO_NVARCHAR(DATE_SQL,'DAY')
2021    35      30/08/2021  MONDAY                     
2021    35      05/09/2021  SUNDAY                   

               

推荐阅读