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:gto...@ffn.com] 
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:neil.tompk...@googlemail.com]
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 <aim.prab...@gmail.com> 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 <
> neil.tompk...@googlemail.com> 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/mysql?unsub=randall.pr...@vt.edu


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to