美图如何保存多个Date/Time类型

Mito how to save multiple Date/Time Types

我有一些使用不同日期类型的文件:

有些只有年份“2020”,有些只有月份“2020-12”,还有一些有日期:“2020-12-21”

所以我想使用间隔。 像这样:

(define-table test-date ()
  ((date :col-type :interval
         :initarg :date
         :accessor date)))
(create-dao 'test-date
            :date "2020 years")
(date (find-dao 'test-date))=>((:MONTHS 24240) (:DAYS 0) (:SECONDS 0) (:USECONDS 0))

Q1。 interval 应该这样使用吗?

Q2。如何获取年份?

你对 interval 的使用很臭。看,你存储了一年,你得到的是几个月的持续时间。 interval 用于存储持续时间,特别用于日期运算:date + INTERVAL expr unit。所以我认为你不想在这里使用它来存储日期格式。

你可以:

  • 存储日期并将不完整的日期转换为完整日期:如果您的逻辑可以接受,“2020”将变为“2020-00-00”,
  • 要么存储字符串并使用您自己的验证器函数(您可以使用 Mito 的 inflation/deflation 机制以正确的数据格式检索数据),
  • 要么使用更多可为空的日期字段(年、月、日……)。

日期和时间操作的秘诀:https://lispcookbook.github.io/cl-cookbook/dates_and_times.html