× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



To get around the digits() issue, I used to wrap it in right(digits(<whatever>),<how many digits you want>).
It seems pretty easy to decipher.


Roger Harman
COMMON Certified Application Developer - ILE RPG on IBM i on Power

-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Vern Hamberg via RPG400-L
Sent: Wednesday, August 16, 2023 4:06 PM
To: rpg400-l@xxxxxxxxxxxxxxxxxx
Cc: Vern Hamberg <vhamberg@xxxxxxxxxxxxxxx>
Subject: Re: help with SQL date coversion

Hi Peter

Your version works because you have used an actual string, '050923'. The
OP used char(050923) = that gives a result of '50923', which is not a
valid date, right?

The other reply suggested using digits - that won't work, either, it
gives the result '0000050923' - again, that is not a valid date.

digits will work if the OP defines the data type of the number, as here
- digits(dec(050923, 6, 0))

The issue seems related to default data types for constants - I did look
it up and found this in the SQL Reference -

An/integer constant/specifies an integer as a signed or unsigned
number with a maximum of 19 digits that does not include a decimal
point. The data type of an integer constant is large integer if its
value is within the range of a large integer. The data type of an
integer constant is big integer if its value is outside the range of a
large integer, but within the range of a big integer. A constant that
is defined outside the range of big integer values is considered a
decimal constant.

large integer is 4 bytes, 10 digits, big integer is 8 bytes, 19 digits -
that's where the 5 leading zeroes came from.

Interesting problem, eh?

Cheers
Vern

On 8/16/2023 2:10 PM, Peter Dow wrote:
The problem might be the char() function. I think varchar_format is
expectiing a varchar, not a char.

Both of these work:

values dec(varchar_format(to_date('150923','DDMMYY'),'YYMMDD'),6)

values dec(varchar_format(to_date('050923','DDMMYY'),'YYMMDD'),6)

--
*Peter Dow* /
Dow Software Services, Inc.
909 793-9050
petercdow@xxxxxxxxx
pdow@xxxxxxxxxxxxxx t/

On 8/16/2023 9:46 AM, gio.cot via RPG400-L wrote:
Hi all

In a program i found this function that convert data from DDMMYY to
YYMMDD
or vice versa.

If i run this :

values dec(varchar_format(to_date(char(150923), 'DDMMYY'),
'YYMMDD'),6) ;

it works

if i run this :

values dec(varchar_format(to_date(char(050923), 'DDMMYY'),
'YYMMDD'),6) ;

it DON'T work

how can i solve this problem ? i think that the problem was caused
from the
first zero in the 050923, that came converted to blank ??!!


Thanks in advance




--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.