問題:
MySQLデータベースの特定の日付から年と月を取得したい。
例:
私たちのデータベースには、 datesという名前のテーブルがあります
id
列にデータがあります およびdate
。
id | 日付 |
---|---|
1 | 2008-04-21 |
2 | 1987-12-14 |
year
を抽出してみましょう およびmonth
日付から。
ソリューション1:
SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month FROM dates;
結果は次のとおりです。
year | 月 |
---|---|
2008 | 4 |
1987 | 12 |
ディスカッション:
年と月の列を取得するには、 EXTRACT(part FROM date)
を使用します 働き。このソリューションでは、part引数は YEAR
に置き換えられます およびMONTH
year
を取得するには およびmonth
個別に、それぞれ独自の列にあります。
EXTRACT()
について詳しく知ることができます MySQLの公式ドキュメントにあります。
ソリューション2:
SELECT EXTRACT(YEAR_MONTH FROM date) AS year_and_month FROM dates;
結果は次のとおりです。
year_and_month |
---|
200804 |
198712 |
ディスカッション:
このソリューションは前のソリューションとまったく同じように機能しますが、 YEAR_MONTH
年と月を別々に取得するのではなく、1つの列にまとめるために使用されます。年と月の値が互いに分離されていないことに注意してください。
ソリューション3:
SELECT YEAR(date) AS year, MONTH(date) AS month FROM dates;
結果は次のとおりです。
year | 月 |
---|---|
2008 | 4 |
1987 | 12 |
ディスカッション:
今回は、 YEAR()
およびMONTH()
関数は、2つの列を作成するために使用されます。 YEAR()
年とMONTH()
を返します 月を数値として返します。
ソリューション4:
SELECT YEAR(date) AS year, MONTHNAME(date) AS month FROM dates;
結果は次のとおりです。
year | 月 |
---|---|
2008 | 4月 |
1987 | 12月 |
ディスカッション:
月の名前を取得するには、 MONTHNAME()
を使用します 働き。結果には、月番号の代わりに月名が表示されます。
ソリューション5:
SELECT DATE_FORMAT(date, '%Y-%m') AS year_and_month FROM dates;
結果は次のとおりです。
year_and_month |
---|
2008-04 |
1987-12 |
ディスカッション:
DATE_FORMAT()
を使用します date
を表示する関数 特定の形式の値。 date
が必要です 最初の引数として、2番目の引数として目的の日付形式を説明する文字列。この場合、文字列'%Y-%m
'、%Y
年を返します、 ‘ -コード> ’ 区切り文字として使用され、
%m
月を数値で返します(%M
に置き換えることができます) 月の名前を取得します。
DATE_FORMAT()
について詳しく知ることができます MySQLの公式ドキュメントにあります。