Navicat 部落格

在 MySQL 中處理日期和時間 - 第 3 部分 2022 年 3 月 14 日,由 Robert Gravelle 撰寫

重要的函式

在本系列關於日期和時間的前兩部分中,我們介紹了 MySQL 的五種時序資料類型。現在是時候把我們的注意力轉移到 MySQL 的眾多日期或時間導向的函式了。

取得目前日期和時間

早在 2021 年 5 月,我們就從如何取得目前日期和時間開始,介紹了 SQL Server 的一些值得注意的日期和時間函式。它為此提供了 GETDATE() 函式。MySQL 的對應函式簡稱為 NOW()。在 Navicat for MySQL 16 中,我們可以在不連接資料庫的情況下呼叫此函式,因為我們沒有選取任何資料表欄:

now (26K)

第 2 部分中提到,TIMESTAMP 類型類似於 DATETIME,但通常用於追蹤記錄的變更。若要取得目前日期和時間作為 TIMESTAMP,我們可以使用 current_timestamp() 函式。這是它的輸出:

get_timestamp (28K)

取得目前日期而不包含時間

如果你只想在 MySQL 中取得目前日期,你可以使用 curdate() 或 current_date() 函式。系統變數 current_date 也可以。無論如何,這三個都以 YYYY-MM-DD 格式給出最新日期:

curdate_etc (33K)

只取得目前時間

同樣,我們可以使用 curtime() 或 current_time() 函式以及 current_time 系統變數來取得 MySQL 中的目前時間。這些都以 HH:MM:SS 格式給出了最新時間:

curtime_etc (32K)

剖析出各個日期部分

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」:

extract_month (27K)

如以下查詢所示,目前是整點已經過去 43 分鐘:

extract_minute (28K)

其他日期剖析函式

是否難以記住所有 part 單位?沒關係,因為 MySQL 提供了單獨的函式來剖析日期和時間。

若要從日期時間值剖析日期或時間,分別有 date() 和 time() 函式:

date_and_time (32K)

若要將日期拆分為其組成部分,可以使用 YEAR()、MONTH() 和 DAYOFMONTH()(或 DAY())函式:

year_month_day (43K)

時間部分也有自己的函式:HOUR()、MINUTE() 和 SECOND():

hour_minute_second (39K)

從單獨的部分構造日期時間

在 MySQL 中,有很多方法可以從單獨的日期部分和時間部分建日期時間,足以為他們編寫獨立的文章。現在,讓我們看一下建立日期的一種方法。MAKEDATE() 函式可以傳回特定 yeardayofyear 的日期。以下是一個例子:

makedate (28K)

預告

本文探索了 MySQL 的許多日期或時間導向的函式。在下一部分中,我們將介紹在 MySQL 中建立日期和時間的其他方法。

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