重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

練習問題~
次のようなテーブル「zaiko」があります。
mysql> select a,b,c from zaiko;
+--------+------+------------+
| a   |  b |   c |
+--------+------+------------+
| 東支店 | 200 | 2011-08-08 |
| 西支店 | 500 | 2017-06-15 |
| 南支店 | 100 | 2010-02-23 |
| 北支店 | 400 | 2019-08-08 |
+--------+------+------------+
このテーブル「zaiko」のカラム「c」の値が、現在より5年以前
のものを除いたレコードだけを抽出し、テーブル「new_zaiko」
を作ってください。ただし、この処理は、2018年に行った
ものとします。

正解は下記です。
mysql> create table new_zaiko select * from zaiko where c>now() - interval 5 year;
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from new_zaiko;
+--------+------+------------+
| a   | b   | c   |
+--------+------+------------+
| 西支店 | 500 | 2017-06-15 |
| 北支店 | 400 | 2019-08-08 |
+--------+------+------------+

解説
create table new_zaiko select * from zaiko
テーブルzaikoを複製してnew_zaikoテーブルを新たに作成する。

where c>now() - interval 5 year;
new_zaikoテーブルのカラム cは現在から換算して5年以降のものを残す。

※now関数は現在の日付と時刻を表すシリアル値が返す

-----------------------------------------
以上ですが、ここで「interval」がでてきますが
どんな働きがあるのでしょうか?
 よろしくお願いいたします。

A 回答 (2件)

わからない演算子があるならば取説を読みましょう



9.5 式 / 時間間隔
https://dev.mysql.com/doc/refman/8.0/ja/expressi …

日時 - 時間間隔
とすることで、
特定日時から間隔値分だけ減算する日付演算を行います。

now() - interval 5 year
ならば、
現在日時(now)から5年(year)間隔分(interval)だけ減算(-)した日時
が計算されます。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました。
Aンス:間隔分(interval)
 了解です。
翻訳すればよかったです。

お礼日時:2021/07/27 04:40

単に日付の計算についてはintervalというキーワードを明示的に使う必要があるということです



今から5年前というのを表記するためには
now() - 5 year
はダメで
now() - interval 5 year
と書きます
    • good
    • 1
この回答へのお礼

ありがとうございます。
今後ともよろしくお願いいたします。

お礼日時:2021/07/27 04:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す