Datetime 将长度为8的字符串转换为*EUR date以进行比较

Datetime 将长度为8的字符串转换为*EUR date以进行比较,datetime,ibm-midrange,datetime-format,rpgle,Datetime,Ibm Midrange,Datetime Format,Rpgle,我想将长度为8的字符串转换为日期类型以进行比较。该字符串的格式为DDMMYYYY(*EUR) 它没有将日与月、月与年分开的周期。如果我在%date BIF中输入一个类似“01012018”的值,编译器会告诉我表达式对于格式*EUR来说太短: D dateEUR s d datfmt(*EUR) C eval dateEUR = %date('01012018':*EUR) 我以前比较两个日期的方法

我想将长度为8的字符串转换为日期类型以进行比较。该字符串的格式为DDMMYYYY(*EUR)

它没有将日与月、月与年分开的周期。如果我在%date BIF中输入一个类似“01012018”的值,编译器会告诉我表达式对于格式*EUR来说太短:

 D dateEUR         s               d   datfmt(*EUR)
 C                   eval      dateEUR = %date('01012018':*EUR)
我以前比较两个日期的方法是将它们都取下来,存储在数据结构中,用子字段对日期进行重新排序,然后从叠加的子字段中获取结果,重新排序的日期


有人知道如何在RPGLE中将8A字符串转换为日期类型吗?

指定的格式将取决于是否存储日期分隔符。如果您的日期位于10字节字符字段中,为DD-MM-YYYY(带破折号),则这也是EUR格式:

      %date(alpha_date : *eur)
如果日期不需要标准分隔符(8字节字符字段中的DDMMYYYY),只需在格式名称的末尾添加数字零(0):

      %date(alpha_date : *eur0)

指定的格式将取决于是否存储日期分隔符。如果您的日期位于10字节字符字段中,为DD-MM-YYYY(带破折号),则这也是EUR格式:

      %date(alpha_date : *eur)
如果日期不需要标准分隔符(8字节字符字段中的DDMMYYYY),只需在格式名称的末尾添加数字零(0):

      %date(alpha_date : *eur0)

数字(分区)字段也可以这样做吗?可以,但如果不需要分隔符,则必须执行两个步骤,例如:
%char(%date(num\u date:*iso):*eur0)
如果要将DDMMYYY数字字段转换为日期,请使用%date(num\u date:*eur)。Nifriz的建议将yyyyymmdd数字字段转换为日期,然后将日期转换为DDMMYYYY格式的字符字段,这可能不是这里需要的。是的,它是反转%date(%char(num_date:*iso):*eur0)。。。对不起@Barbara_Morris数字字段支持*EUR和*ISO,但不支持*EUR0和*ISO0。这对数字(分区)字段也可能吗?是的,这是可能的,但如果不需要分隔符,则必须执行两个步骤,例如:
%char(%date(num_date:*ISO):*EUR0)
如果要将带有DDMMYYY的数字字段转换为日期,请使用%date(num_date:*eur)。Nifriz的建议是将YYYYMMDD数字字段转换为日期,然后将日期转换为DDMMYYYY格式的字符字段,这可能不是这里需要的格式。是的,它是反转%date(%char(num_date:*iso):*eur0)…对不起。@Barbara_Morris数字字段支持*EUR和*ISO,但不支持*EUR0和*ISO0。