sql >> Databáze >  >> RDS >> Mysql

Uplynulý čas od daného času v databázi

Toho lze dosáhnout s velmi malým množstvím Javascriptu.

Za předpokladu, že čas vytvoření je v tabulce vykreslen dynamicky ve formátu dd MMM yyyy hh:mm:ss , něco takového by mělo stačit:

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    ElapsedTimeLogger = function(dateElementId, elapsedElementId, interval) {
        var container = $(elapsedElementId);
        var time = parseDate($(dateElementId).text());
        var interval = interval;
        var timer;

        function parseDate(dateString) {
            var date = new Date(dateString);
            return date.getTime();
        }

        function update() {
            var systemTime = new Date().getTime();
            elapsedTime = systemTime - time;
            container.html(prettyPrintTime(Math.floor(elapsedTime / 1000)));
        }

        function prettyPrintTime(numSeconds) {
            var hours = Math.floor(numSeconds / 3600);
            var minutes = Math.floor((numSeconds - (hours * 3600)) / 60);
            var seconds = numSeconds - (hours * 3600) - (minutes * 60);

            if (hours < 10) hours = "0" + hours;
            if (minutes < 10) minutes = "0" + minutes;
            if (seconds < 10) seconds = "0" + seconds;
            var time = hours + ":" + minutes + ":" + seconds;

            return time;
        }

        this.start = function() {
            timer = setInterval(function() {update()}, interval * 1000);
        }

        this.stop = function() {
            clearTimeout(timer);
        }
    }
    $(document).ready(function () {
        var timeLogger = new ElapsedTimeLogger("#date", "#elapsed", 2);
        timeLogger.start();

        $("#stop_timer").click(function() {
            timeLogger.stop();
        });
        $("#start_timer").click(function() {
            timeLogger.start();
        });
    });
    </script>
</head>
<body>
    <table border="1">
        <tr><th>Created</th><th>Timer</th></tr>
        <tr><td id="date">21 Feb 2013 12:30:00</td><td id="elapsed"></td></tr>
    </table>
    <input id="stop_timer" type="button" value="Stop timer"></input>
    <input id="start_timer" type="button" value="Start timer"></input>
</body>
</html>

Zkopírujte výše uvedený kód do souboru, řekněte index.html a otevřete jej v prohlížeči. Testoval jsem to v Chrome.

Měl by aktualizovat uplynulý čas každé 2 sekundy, ale můžete změnit interval aktualizace na něco, co vám vyhovuje, např. aby se aktualizoval každých 5 minut:

new ElapsedTimeLogger("#date", "#elapsed", 300);

Obecným konceptem je analyzovat vykreslené „vytvořené“ datum do časového razítka epochy (v milisekundách) a poté vypočítat jeho rozdíl s aktuálním systémovým časem. Chcete-li získat dynamickou aktualizaci uplynulého času, použijte Javascript setInterval funkce. Chcete-li zastavit aktualizaci uplynulého času, použijte Javascript clearTimeout funkce.

Zvedl jsem prettyPrintTime funkce od powtac .



  1. Příklady DAYNAME() – MySQL

  2. Uložte výsledek dotazu do proměnné pomocí PL/pgSQL

  3. Následný krok č. 1 při hledání vedoucích zástupných znaků

  4. přístup odepřen uživateli @ 'localhost' do databáze ''