3.1 日付と時刻を操作する関数のリスト

日付と時刻は、データベースに保存されるデータの最も一般的なタイプの 1 つです。そのため、それらを操作するための関数のリストは非常に膨大になります。最も人気のあるものは次のとおりです。

# 関数 説明
1 CURDATE() 現在の日付を返します
2 時間() 現在時刻を返します
3 NOW()、LOCALTIME() 現在の日付と現在時刻を返します
4 年() 日付からの年を返します
5 月() 日付から月を返します
6 DAY()、DAYOFMONTH() 日付から日を返します
7 時間() 時間から数時間のみを返します
8 分() 時間から分を発表
9 2番目() 時刻から秒を返します
10 曜日名() 曜日の名前を返します:月曜日、...
十一 月名() 月の名前を返します: 1 月、...
12 週() 日付から週を返します
13 平日() 曜日の数値を返します: 月曜日 - 0、火曜日 - 1
14 ウィーコフィイヤー() その年の週番号を返します
15 曜日() 曜日の数値を返します: 日曜日 - 1、月曜日 - 2
16 DAYOFYEAR() 年間通算日を返します: 1 ~ 366
17 日にち() 「datetime」オブジェクトから日付のみを返します。
18 ADDDATE() 日付に日数を加算します
19 サブデート() 日付から日数を減算します
20 追加時間() 時間を追加します
21 サブタイム() 時間から時間を減算します

関数の操作方法を理解しやすくするために、関数を意図的に小さなグループにグループ化しました。以下では、各グループから 1 つの関数を検討します。

日付と時刻を操作するための関数の完全なリストは、リンクhttps://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.htmlで見つけることができます。

3.2 関数の呼び出し

ちなみに、非常に多くの関数を学習しているので、演算子を と一緒にSELECT使用する必要はないことを言及しておくと役立つと思いますFROM。任意の式の値を返すことができます。その全体像はテンプレートによって示されます。

SELECT expression

何らかの関数を呼び出したい場合は、次のようなコードを記述する必要があります。

SELECT function(options)

SELECT以下に、テーブルを使用しない演算子の操作の例をいくつか示します。

# リクエスト 結果
1 セレクト1+1 2
2 セレクト 13 モード 5 3
3 SELECT RAND() 0.20771444235715497
4 SELECT CURDATE() 2022-06-04
5 選択現在の時間() 00:06:02
6 今すぐ選択() 2022-06-04 00:06:43

上の表でわかるように、現在の日付と時刻を取得するには、次のいずれかの関数を使用するだけです。

  • CURDATE()- 現在の日付;
  • CURTIME()- 現在の時刻;
  • NOW()– 現在の日付と時刻。

3.3 データを年と月ごとにグループ化する

従業員のタスクを含むタスク テーブルを思い出してみましょう。この表のタスクを年ごとにグループ化してみましょう。YEAR()これを行うには、渡された日付から年を返す関数を使用します。

クエリの最初のバージョンは次のようになります。

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    deadline
FROM task

このクエリの結果は次のようになります。

ID 従業員ID 名前 締め切り
1 1 フロントエンドのバグを修正 2022年 2022-06-01
2 2 バックエンドのバグを修正 2022年 2022-06-15
3 5 コーヒーを買う 2022年 2022-07-01
4 5 コーヒーを買う 2022年 2022-08-01
5 5 コーヒーを買う 2022年 2022-09-01
6 (ヌル) オフィスを掃除する (ヌル) (ヌル)
7 4 人生を楽しむ (ヌル) (ヌル)
8 6 人生を楽しむ (ヌル) (ヌル)

すべての行が同じ年を持っていることがわかるので、年と月の 2 つのフィールドを使用しましょう。クエリの 2 番目のバージョンは次のようになります。

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    MONTH(deadline) AS month,
    deadline
FROM task

このクエリの結果は次のようになります。

ID 従業員ID 名前 締め切り
1 1 フロントエンドのバグを修正 2022年 6 2022-06-01
2 2 バックエンドのバグを修正 2022年 6 2022-06-15
3 5 コーヒーを買う 2022年 7 2022-07-01
4 5 コーヒーを買う 2022年 8 2022-08-01
5 5 コーヒーを買う 2022年 9 2022-09-01
6 (ヌル) オフィスを掃除する (ヌル) (ヌル) (ヌル)
7 4 人生を楽しむ (ヌル) (ヌル) (ヌル)
8 6 人生を楽しむ (ヌル) (ヌル) (ヌル)

タスクを年と月でグループ化する方法については説明しません。演算子を使用することについてはすでに学習済みですGROUP BY