× 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.



Right you are Vern.

For some reason I was thinking of an issue I had with a UDF where it was defined with a CHAR input parameter and when testing, I passed it a literal, e.g. 'ABC' and it failed because the literal is passed as VARCHAR.

I'm also curious about the intended purpose.  If the actual use is to convert a character field from a file, then all you need is

select varchar_format(to_date(myFldChar,'DDMMYY'), 'YYMMDD') from myFile;




On 8/16/2023 4:05 PM, Vern Hamberg via RPG400-L wrote:
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





As an Amazon Associate we earn from qualifying purchases.

This thread ...

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.