Here is a MySQL stored procedure that I have used to format the difference
between two dates:
CREATE definer=`ro...@`127.0.0.1` FUNCTION `sp_maint_PeriodLength`(dt1
DATETIME, dt2 DATETIME) RETURNS char(128) CHARSET latin1
BEGIN
DECLARE yy, mm, d0, dd, hh, mi, ss, t1 BIGINT;
DECLARE t0 TIMESTAMP;
SET yy = TIMESTAMPDIFF(YEAR, dt1, dt2);
SET mm = TIMESTAMPDIFF(MONTH, dt1, dt2) MOD 12;
SET d0 = TIMESTAMPDIFF(DAY, dt1, dt2);
IF yy = 0 OR mm = 0 THEN
SET dd = 0;
ELSE
SET dd = d0 MOD (yy * mm);
END IF;
SET t0 = TIMESTAMPADD(DAY, d0, dt1);
SET t1 = TIME_TO_SEC(TIMEDIFF(dt2, t0));
SET hh = FLOOR(t1 / 3600);
SET mi = FLOOR(t1 / 60) - 60 * hh;
SET ss = t1 - 3600 * hh - 60 * mi;
RETURN CONCAT( yy, ' years ', mm, ' months ', dd, ' days ', hh, ' hours
', mi, ' mins ', ss, ' secs' );
END
Maybe this will help.
Thanks,
Randall Price
Senior Programmer Analyst
Virginia Tech
-----Original Message-----
From: Gavin Towey [mailto:[email protected]]
Sent: Friday, March 05, 2010 4:15 PM
To: Tompkins Neil; prabhat kumar
Cc: [MySQL]
Subject: RE: Displaying date/time
That's probably something best done in your presentation (app) layer.
If you must do this in mysql, then you'll probably want to write a stored
function.
-----Original Message-----
From: Tompkins Neil [mailto:[email protected]]
Sent: Friday, March 05, 2010 10:27 AM
To: prabhat kumar
Cc: [MySQL]
Subject: Re: Displaying date/time
Hi
That is kind of what I'm looking for. However I'd like to be able to
display the difference between date 1 and date 2 like
1d 2h 29min ago
Thanks
Neil
On Fri, Mar 5, 2010 at 3:32 PM, prabhat kumar <[email protected]> wrote:
> Might be this will help you:
> there is a table called message with 3 colums - id, pubdate and message;
> You can get all messages from the last 5 minutes with the following
> example;
>
> SELECT TIMESTAMPDIFF(MINUTE, pubdate, now()), id, message from message
> where (TIMESTAMPDIFF(MINUTE, pubdate, now()) < 5);
>
> Thanks,
>
>
> On Fri, Mar 5, 2010 at 8:19 PM, Tompkins Neil <
> [email protected]> wrote:
>
>> Hi
>>
>> I have a number of rows which have Date and Time data in. I want to
>> display
>> in the following formats based on the systems current time
>>
>> e.g under 1 hour 24min ago
>> e.g under 1 day 16h 29min ago
>> e.g over 1 day 1d 2h 29min ago
>> e.g over 1 week 1w 4d 2h 29min ago
>>
>> How would this best be achieve using MySQL.
>>
>> Thanks,
>> Neil
>>
>
>
>
> --
> Best Regards,
>
> Prabhat Kumar
> MySQL DBA
> Datavail-India Mumbai
> Mobile : 91-9987681929
> www.datavail.com
>
> My Blog: http://adminlinux.blogspot.com
> My LinkedIn: http://www.linkedin.com/in/profileprabhat
>
This message contains confidential information and is intended only for the
individual named. If you are not the named addressee, you are notified that
reviewing, disseminating, disclosing, copying or distributing this e-mail is
strictly prohibited. Please notify the sender immediately by e-mail if you
have received this e-mail by mistake and delete this e-mail from your system.
E-mail transmission cannot be guaranteed to be secure or error-free as
information could be intercepted, corrupted, lost, destroyed, arrive late or
incomplete, or contain viruses. The sender therefore does not accept liability
for any loss or damage caused by viruses or errors or omissions in the contents
of this message, which arise as a result of e-mail transmission. [FriendFinder
Networks, Inc., 220 Humbolt court, Sunnyvale, CA 94089, USA, FriendFinder.com
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[email protected]
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[email protected]