簡體   English   中英

如何排序兩個日期列並從mariadb的一個表中獲取最新的20條記錄?

[英]how to order two date columns and get latest 20 records from one table in mariadb?

我在mariadb中有一個名為post表,其中包含列

|| p_creation_dateAndTime || p_modification_dateAndTime ||

並且兩個值都是datetime類型

現在我要從表中創建或修改以降序排列的5條記錄

這意味着現在當前時間是10-10-2010 10:10:10並且表中的條目就像

p_creation_dateAndTime || p_modification_dateAndTime
07-07-2007 07-07-07    || NULL
02-02-2002 02-02-02    || NULL
03-03-2003 03-03-03    || 07-07-2007 07-07-07    
05-05-2005 05-05-05    || NULL
02-02-2002 02-02-02    || 09-09-2009 09-09-09
08-08-2008 08-08-08    || NULL

我希望結果像

p_creation_dateAndTime || p_modification_dateAndTime
02-02-2002 02-02-02    || 09-09-2009 09-09-09
08-08-2008 08-08-08    || NULL
07-07-2007 07-07-07    || NULL
03-03-2003 03-03-03    || 07-07-2007 07-07-07   
05-05-2005 05-05-05    || NULL
02-02-2002 02-02-02    || NULL 

如09> 08> 07> 07> 05> 02

有什么解決辦法嗎?

上面的代碼在我的項目中使用,它與stackoverflow站點相同,並且在那時向用戶顯示問題時需要這種排序

提前致謝

在MySQL或MariaDB或Postgres或Oracle或Teradata或DB2或BigQuery或RedShift(等等)中,使用great greatest()

order by greatest(p_creation_dateAndTime,
                  coalesce(p_modification_dateAndTime, p_creation_dateAndTime)
                 ) desc,
         p_creation_dateAndTime desc -- in the event of ties

coalesce()用於處理NULL值。 如果greatest()任何參數為NULL ,則返回值為NULL

如果確實使用的是datetime數據類型,則不必擔心顯示日期的格式。 order by是內部格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM