【问题标题】:Clojure date variables to pass into a database queryClojure 日期变量传递到数据库查询
【发布时间】:2013-09-14 09:11:07
【问题描述】:

我想使用两个变量,dateFrom 和 dateTo。它们所在的脚本将由作业调度程序自动运行。我希望自动更新这两个变量,以便将它们传递给数据库查询并始终从前一天提取数据。

因此,如果今天是 9 月 13 日,dateFrom 应该包含 9 月 11 日,dateTo 应该包含 9 月 12 日。

每次运行脚本时,变量都应该自动更新。 日期格式应为 YYYYMMDD

有谁知道这是否可以在 Clojure 中完成?

非常感谢您的帮助

【问题讨论】:

  • 你知道如何在 Java 中做到这一点吗?
  • 我不能说我愿意...我猜你会说在 clojure 中使用 java 库来实现这个?
  • @Chiron 抱歉,我知道如何在 Java 中执行此操作。 Date date = new Date(),使用简单的日期格式来获取我想要的格式并将其存储为变量。将日期字符串解析为 int,-1 表示前一天给出 dateFrom 和 dateTo。现在对于 clojure 变体...
  • @Blue42:如果您使用 Calendar.add 方法,则无需在不同日期格式之间进行所有转换。
  • 我说的是这个github.com/clj-time/clj-time

标签: date clojure automation date-format


【解决方案1】:

您可以为此使用clj-time

(use '[clj-time.core :only [days minus today]]
     '[clj-time.coerce :only [to-sql-date]])

(let [start (-> (today) (minus (days 2)) to-sql-date)
      end   (-> (today) (minus (days 1)) to-sql-date)]
  [start end])

【讨论】:

    【解决方案2】:

    这是来自 Clojure REPL 的示例会话,其中包含所需的操作:

    user=> (import java.util.Date)
    java.util.Date
    user=> (def now (Date.))
    #'user/now
    user=> (import java.util.Calendar)
    java.util.Calendar
    user=> (def cal (Calendar/getInstance))
    #'user/cal
    user=> (.setTime cal now)
    nil
    user=> (.add cal Calendar/DATE -2)
    nil
    user=> (def dateFrom (.getTime cal))
    #'user/dateFrom
    user=> (.setTime cal now)
    nil
    user=> (.add cal Calendar/DATE -1)
    nil
    user=> (def dateTo (.getTime cal))
    #'user/dateTo
    user=> (import java.text.SimpleDateFormat)
    java.text.SimpleDateFormat
    user=> (def sdf (SimpleDateFormat. "yyyyMMdd"))
    #'user/sdf
    user=> (.format sdf dateFrom)
    "20130912"
    user=> (.format sdf dateTo)
    "20130913"
    

    【讨论】:

    • 谢谢@Rord。我会试试看!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    相关资源
    最近更新 更多