我的任务是通过 sql 脚本将 ABAP 样式的日期(即 2017-11-20,表示为字符串“20171120”)转换为 HANA 日期。这可以通过以下方式轻松完成:
select to_date('20171120','YYYYMMDD') from dummy;
但是还有另一个要求:如果abap 日期是初始的(值'00000000'),数据库应该存储一个空值。我找到了一个可行的解决方案:如果只找到 'Z',我将潜在的初始日期 '00000000' 替换为 'Z' 并将字符串修剪为 null:
select to_date(trim(leading 'Z' from replace('00000000','00000000','Z')),'YYYYMMDD') from dummy;
-- result: null
select to_date(trim(leading 'Z' from replace('20171120','00000000','Z')),'YYYYMMDD') from dummy;
-- result: 2017-11-20
但这看起来像一个肮脏的黑客。有没有人想出一个更优雅的解决方案?