重要な関数
日付と時刻に関するこのシリーズの最初の2回の記事では、MySQLの5つの時間データタイプについて説明しました。今回は、MySQLの多くの日付/時刻指向関数のいくつかに注意を向けましょう。
現在の日付と時刻を取得する
2021年5月に、SQL Serverの注目すべき日付と時刻の関数のいくつかについて説明しました。現在の日付と時刻を取得する方法の説明から始めましたが、その目的のためにGETDATE()関数が提供されています。MySQLの同等の関数は、シンプルにNOW()と呼ばれます。Navicat for MySQL 16では、データベースに接続せずにこの関数を呼び出すことができます。テーブルの列を選択していません。

パート2で説明したように、TIMESTAMPタイプはDATETIMEに似ていますが、通常、レコードへの変更を追跡するために使用されます。現在の日付と時刻をTIMESTAMPとして取得するためには、current_timestamp()関数を使用できます。その出力は次のとおりです。

時刻なしで現在の日付を取得する
MySQLで現在の日付のみを取得する場合は、curdate()関数またはcurrent_date()関数のいずれかを使用できます。システム変数current_dateも機能します。いずれにせよ、3つ全てが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では、独自の記事を収集するのに十分なくらい、別々の日付と時刻の部分から日時を作成する多くの方法があります。とりあえず、日付を作成する1つの方法を見てみましょう。MAKEDATE()関数は、year とdayofyearを指定して日付を返します。次に例を示します。

今後
このブログでは、MySQLの多くの日付/時刻指向関数のいくつかを調査しました。次回の記事では、MySQLで日付と時刻を作成する他のいくつかの方法について説明します。