重要的函式
在本系列關於日期和時間的前兩部分中,我們介紹了 MySQL 的五種時序資料類型。現在是時候把我們的注意力轉移到 MySQL 的眾多日期或時間導向的函式了。
取得目前日期和時間
早在 2021 年 5 月,我們就從如何取得目前日期和時間開始,介紹了 SQL Server 的一些值得注意的日期和時間函式。它為此提供了 GETDATE() 函式。MySQL 的對應函式簡稱為 NOW()。在 Navicat for MySQL 16 中,我們可以在不連接資料庫的情況下呼叫此函式,因為我們沒有選取任何資料表欄:
第 2 部分中提到,TIMESTAMP 類型類似於 DATETIME,但通常用於追蹤記錄的變更。若要取得目前日期和時間作為 TIMESTAMP,我們可以使用 current_timestamp() 函式。這是它的輸出:
取得目前日期而不包含時間
如果你只想在 MySQL 中取得目前日期,你可以使用 curdate() 或 current_date() 函式。系統變數 current_date 也可以。無論如何,這三個都以 YYYY-MM-DD 格式給出最新日期:
只取得目前時間
同樣,我們可以使用 curtime() 或 current_time() 函式以及 current_time 系統變數來取得 MySQL 中的目前時間。這些都以 HH:MM:SS 格式給出了最新時間:
剖析出各個日期部分
SQL Server 提供了通用的 DATEPART() 函式來提取日期時間的一部分。而 MySQL提供了對應的 EXTRACT() 函式。與 SQL Server 函式類似,EXTRACT() 接受 part 單位和 date:
EXTRACT(part FROM date)
以下是所有有效的 part 值:
- MICROSECOND
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
在撰寫本文時是2月,所以下面呼叫 EXTRACT() 會產生一個值「2」:
如以下查詢所示,目前是整點已經過去 43 分鐘:
其他日期剖析函式
是否難以記住所有 part 單位?沒關係,因為 MySQL 提供了單獨的函式來剖析日期和時間。
若要從日期時間值剖析日期或時間,分別有 date() 和 time() 函式:
若要將日期拆分為其組成部分,可以使用 YEAR()、MONTH() 和 DAYOFMONTH()(或 DAY())函式:
時間部分也有自己的函式:HOUR()、MINUTE() 和 SECOND():
從單獨的部分構造日期時間
在 MySQL 中,有很多方法可以從單獨的日期部分和時間部分建日期時間,足以為他們編寫獨立的文章。現在,讓我們看一下建立日期的一種方法。MAKEDATE() 函式可以傳回特定 year 和 dayofyear 的日期。以下是一個例子:
預告
本文探索了 MySQL 的許多日期或時間導向的函式。在下一部分中,我們將介紹在 MySQL 中建立日期和時間的其他方法。