在计算列中从nvarcher转换为日期时如何验证日期

2020-09-07 09:13发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在使用计算列将nvarchar数据类型的字段转换为Date数据类型的字段时,我需要验证Date(以删除垃圾数据)

我对列引擎使用下面的表达式,但是对于像11月31日或2月30日这样的日期仍然不起作用

if((int(leftstr(" DummyDate" 4 ))> = 0001 and int(leftstr(" DummyDate" 4 ))<= 9999 )和

(int(midstr(" DummyDate" 5 2 ))> = 01 和int(midstr(" DummyDate" 5 2 ))<= 12 )和

(int(rightstr(" DummyDate"" 2 ))> = 01 和int(rightstr(" DummyDate" 2 ))<= 31 ),日期(" DummyDate" ),日期( null ))

避免使用更多的if和case语句来验证日期。

有人可以帮助我提供一些想法或其他功能(或SQL引擎功能)来实现相同的功能。

此致

Ruchi

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在使用计算列将nvarchar数据类型的字段转换为Date数据类型的字段时,我需要验证Date(以删除垃圾数据)

我对列引擎使用下面的表达式,但是对于像11月31日或2月30日这样的日期仍然不起作用

if((int(leftstr(" DummyDate" 4 ))> = 0001 and int(leftstr(" DummyDate" 4 ))<= 9999 )和

(int(midstr(" DummyDate" 5 2 ))> = 01 和int(midstr(" DummyDate" 5 2 ))<= 12 )和

(int(rightstr(" DummyDate"" 2 ))> = 01 和int(rightstr(" DummyDate" 2 ))<= 31 ),日期(" DummyDate" ),日期( null ))

避免使用更多的if和case语句来验证日期。

有人可以帮助我提供一些想法或其他功能(或SQL引擎功能)来实现相同的功能。

此致

Ruchi

付费偷看设置
发送
2条回答
风早神人
1楼 · 2020-09-07 09:49.采纳回答

有一个DATS_IS_VALID SQL函数可用于验证日期(字符串必须采用" YYYYMMDD"格式):

 SELECT
 DATS_IS_VALID('20170101'),-自日期有效起返回1
 DATS_IS_VALID('20172001')-由于日期无效而返回0
 来自DUMMY;
 
clasier
2楼-- · 2020-09-07 09:42

您好,Ruchi,

如果您已激活M_TIME_DIMENSION视图,则可以将NVARCHAR日期加入该表。 可以帮助您验证日期并将其转换。

问候,

弗雷德里克

一周热门 更多>