美图如何保存多个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
我有一些使用不同日期类型的文件:
有些只有年份“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