Navicat 部落格

在 MySQL 中計算每日平均日期或時間間隔 2021 年 3 月 19 日,由 Robert Gravelle 撰寫

之前的文章中,我們使用 Navicat for SQL Server 將 SQL Server 中特定的欄的平均每日計數製成表格。在今天的後續文章中,我們將稍微提高難度係數,計算開始日期和結束日期欄的每日平均日期時間間隔。為了示範之用,我將使用 Navicat Premium 和 MySQL。

計算以日為單位的電影租借時間

在 Sakila 範例資料庫的 rental 資料表中,有兩個日期欄位代表一個時間間隔:它們是租借日期和歸還日期。無疑,這兩個欄位儲存了租借電影的日期時間以及歸還電影的日期時間。

rental_table (103K)

考慮到這一點,假設我們需要撰寫一個查詢來顯示每日電影租借的平均長度。第一步將是計算所有電影租借的時長。以下是在 Navicat 中查詢的樣子:

rental_length_in_days_query (99K)

若要將 rental_date 從日期時間轉換為純日期,我們可以使用 DATE() 函式。它接受任何有效的日期或日期時間運算式。

日數可以使用 MySQL DATEDIFF() 函式計算。它傳回兩個日期或日期時間之間的日數。Navicat 提供的自動完成程式碼功能可以幫助我們使用 DATEDIFF() 函式。當你開始輸入單字時,將出現一個彈出清單,其中包含有關結構描式、資料表或檢視,欄以及預存程序和函式的建議。以下是建議清單中的 DATEDIFF() 函式:

auto_complete_with_datediff_function (12K)

選取一個函式後,它會以可透過 TAB 鍵聚焦、彩色編碼、輸入參數的格式插入到程式碼中的游標位置,以便快速輸入:

datediff_function_with_color_coded_parameters (3K)

關於時間

對於較短的時間範圍,可以使用 DATEDIFF() 代替 DATEDIF()。它傳回以秒為單位的時差。對於更長的時間間隔,你可以將傳回的數值除以 60 換算成分鐘,再除以 60 換算成小時。

根據日分組結果

下一步是根據日分組結果。這是可以使用 GROUP BY 子句完成。它使我們可以將像 COUNT() 和 AVG() 之類的彙總函式套用於每個 rental_date 的租用日數。以下是加入了 GROUP BY 子句的查詢:

average_rental_length_query (61K)

你會注意到,我將 avg_days_rented 四捨五入到小數點後一位。否則,我們將得到 4 個精確度點數,這對於我們的目的而言可能有點多!

總結

幸虧 MySQL 有許多日期或時間函式,以開始和結束日期欄來計算每日平均日期或時間間隔比以前容易得多。此外,Navicat 功能豐富的 SQL 編輯器為幾乎所有的資料庫執行個體(包括結構描述、資料表、欄以及函式和預存程序)提供自動完成程式碼功能,這能進一步簡化查詢撰寫的程序。

如果你對 Navicat Premium 感興趣,可以免費試用 14 天!



Rob Gravelle 居住於加拿大渥太華,是一名有 20 多年經驗的 IT 專家。過住,Rob 曾為情報相關的組織(如加拿大邊境服務局和各種商業組織)建置系統。在業餘時間,Rob 是一名出色的吉他演奏家,並發行了幾張 CD。如果你想僱用 Rob,可以傳送電子郵件到 Email住址會使用灌水程式保護機制。你需要啟動Javascript才能觀看它

Navicat 文章
頻道記錄
分享
部落格封存檔