Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17


iSeries DB2 -- CURRENT_TIMESTAMP -> Decimal(14) in SQL

Posted on 2007-11-28
Medium Priority
Last Modified: 2013-12-06
I am configuring a tool that, at a particular point, executes a SQL statement on a DB.  It is that generic ... my SQL statement can be anything.

I need a SQL statement that will put the current date / time into a particular field of a DB2 table on an AS400 / iSeries system.

I have Update TheTable Set TheField = CURRENT_TIMESTAMP Where ...

That errors out, however b/c TheField is of type DECIMAL (14).  My customer uses those for date /times.  The date / time would be encoded as 20071126143422

That outfit's programmer says I should generate the number using:
HOUR (current timestamp)*10000+
MINUTE(current timestamp)*100+
SECOND(current timestamp)

Is there no better way?  That is extremely unwieldy.

Question by:Daniel Wilson
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
LVL 46

Assisted Solution

by:Kent Olsen
Kent Olsen earned 400 total points
ID: 20365773
Hi DanielWilson,

Dates on the AS/400 version of DB2 are just a bit different than those on LUW.  Converting the value to a decimal integer is just silly, but if that's the rule that you live by, you don't have a lot of choice.

That block of code should work just fine.  As you say, it's unwieldy, but it should work.  If you're going to do this in several places in your SQL, write the SQL into a function so that the ugly portion hides from view.

Then your SQL is just:

SELECT timestamptoint (current timestamp);

Good Luck,
CREATE FUNCTION timestamptoint (timestamp intime)
  RETURNS decimal (14) 
  DECLARE returnvalue decimal(14); 
    YEAR(CURRENT TIMESTAMP)*10000000000+
    HOUR (current timestamp)*10000+
    MINUTE(current timestamp)*100+
    SECOND(current timestamp)
  INTO returnvalue
  FROM sysibm.sysdummy1; 
  RETURN returnvalue

Open in new window

LVL 18

Accepted Solution

Dave Ford earned 1600 total points
ID: 20366511

The following works for me:

select decimal(left(replace(replace(char(current timestamp),'-',''),'.',''),14))
from   sysibm/sysdummy1

LVL 32

Author Comment

by:Daniel Wilson
ID: 20367045
Dave, yours solved it for me.

KDO, I like the function idea, but was unable to get it to work ... possibly b/c of permissions, I'm not sure.

Thank you both.
LVL 46

Expert Comment

by:Kent Olsen
ID: 20367569
Hi daveslash,

Ah...  Good idea, Dave.

I've used similar countless times.  Don't know why it didn't just pop into my head.    :)    (Maybe it's already full?)


Featured Post

Veeam Task Manager for Hyper-V

Task Manager for Hyper-V provides critical information that allows you to monitor Hyper-V performance by displaying real-time views of CPU and memory at the individual VM-level, so you can quickly identify which VMs are using host resources.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hello I read in a discussion about a person who configured a very simple mirror RAID with two hard drives; the system and data were on the same partition. He asked how to repair the system as it was not booting up anymore. In his case running …
Windows 10 is here and for most admins this means frustration and challenges getting that first working Windows 10 image. As in my previous sysprep articles, I've put together a simple help guide to get you through this process. The aim is to achiev…
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…
Hi friends,  in this video  I'll show you how new windows 10 user can learn the using of windows 10. Thank you.

704 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question