sql - SAP HANA 将 YYYYWW 转换为 MM/DD/YYYY
问题描述
要求是从表 S990 中的字段 SPWOC 中获取星期一和星期日。我想不出任何可以让我提取这些信息的功能组合。该表字段的示例输出是 202135。所以我试图从 2021 年的第 35 周开始获得星期一和星期日。任何关于从哪里开始的想法将不胜感激!
解决方案
仅从表中无法确定是使用 ISO 周计算(即 SAP 标准默认值)还是系统使用非 ISO 周计算方法。
要了解这一点,您需要与了解 SAP 系统如何配置的人交谈。
但是对于问题的范围,让我们假设您使用的系统使用 ISO 方法,其中周从星期一开始,到星期日结束。
即便如此,以封闭形式计算第 X 周的星期一和星期日的日期也并不简单。该TO_DATE()
函数不支持从YYYYWW
到的直接转换YYYY-MM-DD
。
因此,除了编写自己的函数来执行正确的日历算术之外,我只认为以下选项是一种可行的方法:
确保 HANA 表
_SYS_BIC.M_TIME_DIMENSION
已加载您感兴趣的时间范围内的数据(日级别)。这可以通过HANA Studio 或 Web IDE 中的生成时间数据功能来完成。如果需要,请查看文档以获取详细信息。使用时间维度表,您可以获得各种预先计算的日期表示和转换,包括
CALWEEK
和DAY_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
推荐阅读
- angular - 如何在模板中没有函数的情况下使用 *ngFor 循环格式化模板中的数据?
- python - 如何键入提示其 Union 类型在 Python 中变窄的变量?
- c# - ASP.NET Core 控制器返回“成功”框而不是视图并保持在同一页面上
- python - 所有列的线图
- console - DataLayer(Chrome 开发工具)不返回数据
- javascript - 函数总是返回相同的值
- google-apps-script - 如何以编程方式将脚本文件从一个 google 工作表复制到另一个工作表?
- python - cefpython 和 POST 错误 401(未经授权)
- c - 在 [ C ] 中查找字符串函数
- r - 为什么地图功能在蒙特卡洛不起作用