Arhn - архитектура программирования

Clojure: разница во времени между настоящим моментом и датой и временем записей SQL

Попытка выяснить, как лучше всего получить разницу между текущим временем и датой и временем записи mySQL.

Вот фрагмент моего кода

(ns clojure.example.hello
  (:require [clj-time.coerce :as coerce]
            [clj-time.local :as l]))

(let [timenow (l/local-now) ;; #object[org.joda.time.DateTime 0x333e8ce5 2017-02-23T21:44:11.022+11:00]
      last-update (gettimelogged :timestamp) 
      ;; returns SQL datetime which is 2017-02-23 19:20:15, 
      ;; but gets converted into #inst "2017-02-23T08:20:15.000000000-00:00"]

 (println (timenow - lastupdate)))

Как лучше всего провести сравнение между timenow и последним обновлением?

Также, как лучше всего обновить метку времени, если мне нужно? Скажем, если я хочу лениво загрузить его в clojure, например, {:NAME "Jim" :AGE "24" :CHECKDATE "NOW()"}

23.02.2017

  • разница в секундах? РС? нс? 23.02.2017
  • вероятно, лучше всего будет отличаться в секундах 24.02.2017

Ответы:


1

Учитывая, что у вас есть мгновенное значение (значение, начинающееся с #inst ...), вы можете преобразовать его в миллисекунды с помощью функции inst-ms в clojure, а затем сравнить с текущим временем в миллисекундах.

(let [db-ms (inst-ms #inst"2017-02-23T08:20:15.000000000-00:00")
      now-ms (System/currentTimeMillis)]
  (println "Difference is" (- now-ms db-ms) "ms"))

Если вы не используете clojure 1.9, вы можете просто вызвать .getTime на inst:

(.getTime #inst"2017")

Чтобы вставить текущее время с помощью MySQL, у вас есть несколько вариантов, включая использование встроенной функции NOW(), для доступа к которой вы можете использовать honeysql.

Однако для чистого подхода на основе jbdc с помощью clj-time.coerce, как вы уже используете:

(defn get-sql-now []
  (-> (System/currentTimeMillis)
      coerce/from-long
      coerce/to-sql-time))

(j/insert! mysql-db "joshtable" {:name "Jim"
                                 :age 24
                                 :checkdate (get-sql-now)})
23.02.2017
  • Проблемы с использованием inst-ms (let [zyx (inst-ms #inst"2017-02-23T08:20:15.000000000-00:00")] (println zyx)). Я получаю CompilerException java.lang.RuntimeException: Unable to resolve symbol: inst-ms in this context, compiling. Я использую Clojure 1.8.0, должен ли я использовать другую версию? 24.02.2017
  • @Stixxxx Я только что обновил ответ. Вместо этого позвоните (.getTime #inst"2017"). 24.02.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..