List:General Discussion« Previous MessageNext Message »
From:Bryan W. Headley Date:July 10 2002 6:40pm
Subject:Re: DateTime subtraction question
View as plain text  
Richard Fox wrote:
> This question relates to both mysql in general and the mysql++ C++ API in particular,
> thus the adressing to both lists.
> I have a DateTime object (really a formatted string) say "2002-07-10 11:38:38". I
> want to subtract some variable number of hours (from 0 to 11) from it. How do I accomplish
> this in an elegant manner?
> There is quite a bit of logic to handle all the cases where subtracting hours takes
> the date one day back, which can take the month one month back, which can take the year
> one year back! And of couse all the months have different lengths so this can be some ugly
> code. I can do this the hard way, but I was wondering if anyone already has a nice
> solution.  

Are you going to be doing this often (e.g., dateroll conventions, 
holiday/weekend avoidance). If so, your object should be smarter than 
just keeping the string. E.g., it might want to have a notion of the 
julian date, time in UTC, etc., etc.

Convert the date to struct tm, call mktime(). You now have number of 
seconds since the epoch of 1970. Subtract x-hours * 60 minutes * 60 
seconds. Convert back to a struct tm, and fire off strftime.

Real cheap: make MySql dope it out, and take the network hit,

	SELECT "2002-07-10 11:38:38" - INTERVAL 11 HOUR;

____               .:.                 ____
Bryan W. Headley - bwheadley@stripped

Dynaloader Problem?Ray Brighenti3 Apr
  • Re: Dynaloader Problem?Thimble Smith4 Apr
  • Re: DateTime subtraction questionBryan W. Headley10 Jul