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



If you look on www.think400.dk/downloads.htm you will find a utility called
iDate that will take a date in one format and return it in another format.
It is a SQL function but honestly now days what I would recommend is
creating table using DDL and put fields in it for all different formats for
dates. So maybe the key is an actual date data type, first field is an 8,0
CCYYMMDDD fields, the next maybe CYYMMDD, the next maybe MMDDYY, etc. Don't
forget the julian. Then just write a quick and dirty program to write dates
for 20 years or so.

Now whenever you need a date converted you join to the date field and get
the corresponding date format. Use DDL for high speed indexes.

Very efficient.

On Wed, Aug 16, 2023 at 7:34 PM Roger Harman <roger.harman@xxxxxxxxxxx>
wrote:

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.

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