日期和月份未知的订购日期

问题描述 投票:0回答:1

我正在开发一个包含过去事件的网站。对于某些事件,整个日期是已知的,对于一年中的某个月份,对于某些年份,仅是已知的。表事件看起来像:

id
content
date -> YYYY-MM-DD
year -> true, if only year is known, otherwise false
monthandyear -> true if only year and month is known, otherwise false

我想按以下顺序列出表的内容:

  • 按日期降序
  • 如果仅知道月份和年份(将monthandyear设置为true),则内容应列为该月的最后一个
  • 如果仅知道年份(年份设置为true),则内容应列为该年的最后一年

此问题的最佳解决方案是什么?

我正在使用DQL:

SELECT p FROM App:Event p ORDER BY p.date DESC ...
sql dql
1个回答
0
投票

您可以使用条件逻辑。假设date是字符串:

order by left(date, 4),
         (case when not year and not yearmonth then 1 else 2 end),
         left(date, 7),
         (case when not yearmonth then 1  else 2 end)
         date
© www.soinside.com 2019 - 2024. All rights reserved.