Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में टाइमपैन की गणना करें

यह क्वेरी 1 फरवरी, 2011 की मध्यरात्रि से सटीक दिन, घंटे, मिनट और सेकंड प्रदर्शित करेगी:

SELECT 
    TRIM(REPLACE(CONCAT(
        IF(dy=0,'',IF(dy=1,'1 day ',CONCAT(dy,' days '))),
        IF(hr=0,'',IF(hr=1,'1 hr ', CONCAT(hr,' hrs  '))),
        IF(mn=0,'',IF(mn=1,'1 min ',CONCAT(mn,' mins '))),
        IF(sc=0,'',IF(sc=1,'1 sec ',CONCAT(sc,' secs ')))),'  ',' '))
    TimeDisplay
FROM (SELECT dy,hr,mn,MOD(sec_aaaa,60) sc
FROM (SELECT dy,hr,FLOOR((sec_aaa - dy*86400 - hr*3600)/60) mn,sec_aaa sec_aaaa
FROM (SELECT dy,FLOOR((sec_aa - (dy*86400))/3600) hr,sec_aa sec_aaa
FROM (SELECT FLOOR(sec_a/86400) dy,sec_a sec_aa
FROM (SELECT (UNIX_TIMESTAMP() - UNIX_TIMESTAMP('2011-02-01 00:00:00')) sec_a)
A) AA) AAA) AAAA) B;

बस '2011-02-01 00:00:00' को बदलें किसी भी डेटाटाइम मान या तालिका स्तंभ नाम के साथ जो आप चाहते हैं।

इसे आज़माएं !!!

अद्यतन 2011-10-06 13:38 ईडीटी

मैंने एक संग्रहीत कार्य लिखा है जिसे आप कॉल कर सकते हैं जो आपके लिए इसे संभाल लेगा:

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`GetTimeDisplay` $$
CREATE FUNCTION `test`.`GetTimeDisplay` (GivenTimestamp TIMESTAMP)
RETURNS VARCHAR(32)
DETERMINISTIC
BEGIN

    DECLARE rv VARCHAR(32);
    DECLARE diff BIGINT;

    SET diff = UNIX_TIMESTAMP() - UNIX_TIMESTAMP(GivenTimestamp);
    SELECT
        TRIM(REPLACE(CONCAT(
            IF(dy=0,'',IF(dy=1,'1 day ',CONCAT(dy,' days '))),
            IF(hr=0,'',IF(hr=1,'1 hr ', CONCAT(hr,' hrs  '))),
            IF(mn=0,'',IF(mn=1,'1 min ',CONCAT(mn,' mins '))),
            IF(sc=0,'',IF(sc=1,'1 sec ',CONCAT(sc,' secs ')))),'  ',' '))
    INTO rv
    FROM (SELECT dy,hr,mn,MOD(sec_aaaa,60) sc
    FROM (SELECT dy,hr,FLOOR((sec_aaa - dy*86400 - hr*3600)/60) mn,sec_aaa sec_aaaa
    FROM (SELECT dy,FLOOR((sec_aa - (dy*86400))/3600) hr,sec_aa sec_aaa
    FROM (SELECT FLOOR(sec_a/86400) dy,sec_a sec_aa
    FROM (SELECT ABS(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(GivenTimestamp)) sec_a)
    A) AA) AAA) AAAA) B;

    IF diff = 0 THEN
        SET rv = '0 secs';
    END IF;
    IF diff < 0 THEN
        SET rv = CONCAT(rv,' From Now');
    END IF;
    IF diff > 0 THEN
        SET rv = CONCAT(rv,' Ago');
    END IF;

    RETURN rv;

END $$

DELIMITER ;

आप क्वेरी को इस तरह फिर से लिख सकते हैं:

$query = "select country, rprice as regPrice, mprice as midPrice, pprice as prePrice, saddress as streetAddress,
                _id as ID, lat, lng, sname as Name, logo, admin_level_1 as state, locale as city, test.GetTimeDisplay(rdate) as regDate, 
                test.GetTimeDisplay(mdate) as midDate, test.GetTimeDisplay(pdate) as preDate, 
                format((acos(sin(radians($lat1)) * sin(radians(lat)) + cos(radians($lat1)) *
                cos(radians(lat)) * cos(radians($lng1) - radians(lng))) * 6378),1) as distance from stationDetails where 
                (acos(sin(radians($lat1)) * sin(radians(lat)) + cos(radians($lat1)) * cos(radians(lat)) * 
                cos(radians($lng1) - radians(lng))) * 6378) <= $rad order by $sort asc, $type asc";

आप संग्रहीत फ़ंक्शन को किसी अन्य डेटाबेस में ले जाना चाह सकते हैं। मेरे पास जो कोड है वह संग्रहित फ़ंक्शन को परीक्षण डेटाबेस में रखता है।

इसे आज़माएं !!!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं CSV से MySQL में डेटा कैसे आयात कर सकता हूं?

  2. PHP और SQL के माध्यम से XML को आउटपुट करना

  3. LAST_INSERT_ID () MySQL

  4. सिम्फनी 2 सिद्धांत पीडीओ MySQL कनेक्शन लोड डेटा स्थानीय इनफाइल के साथ

  5. PhpMyAdmin में रूट लॉगिन अक्षम करें