Author |
Message
|
ANorm |
Posted: Sat Jul 12, 2003 7:07 pm Post subject: Timestamp Format |
|
|
Newbie
Joined: 15 May 2003 Posts: 7
|
In WMQI, using substring & timestamp I got yyyy-mm-dd hh:mm:ss.
I like to get timestamp in the following format:
mm/dd/yy hh:mm:ss am or pm
Thanks |
|
Back to top |
|
 |
kirani |
Posted: Sat Jul 12, 2003 9:55 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
There is no formatting function in WMQI, you need to write ESQL code to reformat the timestamp. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
ANorm |
Posted: Sun Jul 13, 2003 6:40 am Post subject: |
|
|
Newbie
Joined: 15 May 2003 Posts: 7
|
Could you please provide the ESQL?
Thank you. |
|
Back to top |
|
 |
kirani |
Posted: Sun Jul 13, 2003 9:10 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
TIMESTAMP function will return you data into following format,
Code: |
TIMESTAMP 'CCYY-MM-DD HH:MM:SS.FFFFFF'
|
First, you need to CAST this data CHAR. Now use SUBSTRING function to extract data (YY, MM, DD, HH) and create a new string into desired format. i.e.
You need to write some simple logic to convert the time and append AM/PM to this string. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
Last edited by kirani on Sun Jul 13, 2003 9:41 pm; edited 1 time in total |
|
Back to top |
|
 |
ANorm |
Posted: Sun Jul 13, 2003 11:16 am Post subject: |
|
|
Newbie
Joined: 15 May 2003 Posts: 7
|
Great idea . I will use the SUBSTRING function to extract data and create a new string into desired format.
However, I would appreciate further help with the logic to append the am/pm .
I am gratifying that you and others are always around to help. Thank you. |
|
Back to top |
|
 |
kirani |
Posted: Mon Jul 14, 2003 3:19 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Here you go ..
Code: |
DECLARE CTSTP CHAR CAST (TIMESTAMP AS CHAR);
DECLARE CCYY CHAR SUBSTRING(CTSTP FROM 12 FOR 4);
DECLARE MM CHAR SUBSTRING (CTSTP FROM 17 FOR 2);
DECLARE DD CHAR SUBSTRING (CTSTP FROM 20 FOR 2);
DECLARE HH CHAR SUBSTRING (CTSTP FROM 23 FOR 2);
DECLARE MN CHAR SUBSTRING (CTSTP FROM 26 FOR 2);
DECLARE SS CHAR SUBSTRING (CTSTP FROM 29 FOR 2);
DECLARE FF CHAR SUBSTRING (CTSTP FROM 32 FOR 6);
DECLARE CT CHAR;
DECLARE NEWHH INT;
DECLARE CNEWHH CHAR;
SET NEWHH = CAST (HH AS INT);
IF ( NEWHH > 12 ) THEN
SET NEWHH = NEWHH - 12;
SET CT = 'PM';
ELSEIF (NEWHH = 12 ) THEN
SET CT = 'PM';
ELSEIF (NEWHH = 0 ) THEN
SET CT = 'AM';
SET NEWHH = 12;
ELSE
SET CT = 'AM';
END IF;
IF ( NEWHH < 10 ) THEN
SET CNEWHH = '0' || CAST(NEWHH AS CHAR);
ELSE
SET CNEWHH = CAST (NEWHH AS CHAR);
END IF;
SET OutputRoot.XML.Data = MM || '/' || DD || '/' || SUBSTRING(CCYY FROM 3 FOR 2) || ' ' || CNEWHH || ':' || MN || ':' || SS || ' ' || CT;
|
will give you data into following format:
Code: |
MM/DD/YY HH:MM:SS.FFFFFF AM/PM
|
You could also try doing some optimizations into this code. _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
Empeterson |
Posted: Wed Jul 16, 2003 12:03 pm Post subject: |
|
|
Centurion
Joined: 14 Apr 2003 Posts: 125 Location: Foxboro, MA
|
There is also an EXTRACT function you can use that will give you the portions of the date/time stamp you need. For example:
EXTRACT(YEAR FROM CURRENT_DATE) would return 2003.
EXTRACT(DAY FROM CURRENT_DATE) would return 16
EXTRACT(HOUR FROM CURRENT TIME) would return, for me anyway, 16.
You can use these values and put them in any date/time format you need it to be, be it YYYYMMDD or YYYY-MM-DD or YYYY/MM/DD etc etc.
You can also use the EXTRACT against any of the datetime functions: CURRENT_TIMESTAMP,CURRENT_GMDATE, CURRENT_GMTIME etc.
Just an fyi. _________________ IBM Certified Specialist: MQSeries
IBM Certified Specalist: Websphere MQ Integrator |
|
Back to top |
|
 |
Craig B |
Posted: Thu Jul 17, 2003 8:14 am Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
If you are going to use the EXTRACT function to help reformat your date/time, then be aware that the EXTRACT function returns an INTEGER value. Therefore, if you have a month that is a 06, then EXTRACT will return just 6. So when you re-use the extracted components you may need to add the prefixed 0 back on, for values that are less than 10. _________________ Regards
Craig |
|
Back to top |
|
 |
Empeterson |
Posted: Thu Jul 17, 2003 9:34 am Post subject: |
|
|
Centurion
Joined: 14 Apr 2003 Posts: 125 Location: Foxboro, MA
|
Yes, I forgot about that. Craig is correct. Thank you for that reminder.  _________________ IBM Certified Specialist: MQSeries
IBM Certified Specalist: Websphere MQ Integrator |
|
Back to top |
|
 |
kirani |
Posted: Thu Jul 17, 2003 10:17 am Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
That's why i didn't use EXTRACT function in my code!
I hope with future CSD releases we will get more ESQL functions to do this kind of tricks! _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
Empeterson |
Posted: Thu Jul 17, 2003 11:24 am Post subject: |
|
|
Centurion
Joined: 14 Apr 2003 Posts: 125 Location: Foxboro, MA
|
It effectively amounts to the same amount of code either way you slice it. It boils down to preference really. I agree though, there really should be built in funtionality to handle that. _________________ IBM Certified Specialist: MQSeries
IBM Certified Specalist: Websphere MQ Integrator |
|
Back to top |
|
 |
|