From e5078e8af5ccb844b35b9b44ebfe7085e2007356 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 29 Jul 2024 21:15:35 +0800 Subject: [PATCH] :art: Improve database date filed sorting https://github.com/siyuan-note/siyuan/issues/12127 --- kernel/av/sort.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/kernel/av/sort.go b/kernel/av/sort.go index 66992cde8..5b18b372c 100644 --- a/kernel/av/sort.go +++ b/kernel/av/sort.go @@ -19,6 +19,7 @@ package av import ( "bytes" "strings" + "time" "github.com/siyuan-note/siyuan/kernel/util" ) @@ -84,10 +85,23 @@ func (value *Value) Compare(other *Value, attrView *AttributeView) int { if !other.Date.IsNotEmpty { return -1 } - if value.Date.Content > other.Date.Content { + + valueContent := value.Date.Content + otherContent := other.Date.Content + + if value.Date.IsNotTime { + v := time.UnixMilli(valueContent) + valueContent = time.Date(v.Year(), v.Month(), v.Day(), 0, 0, 0, 0, time.Local).UnixMilli() + } + if other.Date.IsNotTime { + o := time.UnixMilli(otherContent) + otherContent = time.Date(o.Year(), o.Month(), o.Day(), 0, 0, 0, 0, time.Local).UnixMilli() + } + + if valueContent > otherContent { return 1 } - if value.Date.Content < other.Date.Content { + if valueContent < otherContent { return -1 } return 0