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
。
GO TO FULL VERSION