問題:
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の公式ドキュメントにあります。