以下は、MariaDBの日付から年を返すことができる4つの関数です。 3つの関数は年だけを返し、1つは年と週の両方を返します。
YEAR() 機能
YEAR() 関数は、指定された日付の年を返します。結果は1000の範囲になります 9999へ 、または0 年がゼロの日付の場合(0000-00-00など 。
例:
SELECT YEAR('2023-07-25'); 結果:
+--------------------+
| YEAR('2023-07-25') |
+--------------------+
| 2023 |
+--------------------+ EXTRACT() 機能
関数を使用すると、日付から指定された単位を抽出できます。したがって、これを使用して、日付から年(および他の単位)を抽出できます。EXTRACT ()
例:
SELECT EXTRACT(YEAR FROM '2023-07-25'); 結果:
+---------------------------------+ | EXTRACT(YEAR FROM '2023-07-25') | +---------------------------------+ | 2023 | +---------------------------------+
DATE_FORMAT() 機能
DATE_FORMAT() 関数を使用すると、フォーマット文字列に基づいて日付をフォーマットできます。 format文字列は、日付のフォーマット方法を指定します。
したがって、この関数を使用して、日付から年(およびその他の単位)を返すことができます。年をさまざまな形式で返すためのさまざまな形式指定子があります。たとえば、4桁の年、2桁の年など。
さまざまな形式で年を返す例を次に示します。
SELECT
DATE_FORMAT('2023-01-01', '%X') AS "%X",
DATE_FORMAT('2023-01-01', '%x') AS "%x",
DATE_FORMAT('2023-01-01', '%Y') AS "%Y",
DATE_FORMAT('2023-01-01', '%y') AS "%y"; 結果:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2022 | 2023 | 23 | +------+------+------+------+
%xに注意してください 他とは異なる年番号を返しました。
これらの各形式指定子の説明は、%xの理由を説明しています。 別の結果が返されました:
| フォーマット指定子 | 説明 |
|---|---|
%X | 週の最初の日が日曜日の場合の4桁の年。 %Vとともに使用 。 |
%x | 週の最初の日が月曜日の場合の4桁の年。 %vとともに使用 。 |
%Y | 4桁の年。 |
%y | 2桁の年。 |
%Vの説明は次のとおりです および%v 上記の表で参照されているように:
| フォーマット指定子 | 説明 |
|---|---|
%V | 週番号(01-53)、週の最初の日が日曜日の場合。 %Xとともに使用 。 |
%v | 週番号(01-53)、週の最初の日が月曜日の場合。 %xとともに使用 。 |
したがって、これらのフォーマット指定子を上記の例に追加して、次のようにすることができます。
SELECT
DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v"; 結果:
+----------+----------+ | %X, %V | %x, %v | +----------+----------+ | 2023, 01 | 2022, 52 | +----------+----------+
%xに注意してください 常に別の年が返されるわけではありません。実際に使用されている日付によって異なります。 %Xの場合もあります それは他の人に別の年を返します。
日付を1年前に進めましょう:
SELECT
DATE_FORMAT('2024-01-01', '%X') AS "%X",
DATE_FORMAT('2024-01-01', '%x') AS "%x",
DATE_FORMAT('2024-01-01', '%Y') AS "%Y",
DATE_FORMAT('2024-01-01', '%y') AS "%y"; 結果:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2024 | 2024 | 24 | +------+------+------+------+
今回は%X それは奇妙なことです。上記の表で説明されているように、週の最初の日が日曜日か月曜日かによって異なります。
もちろん、年をさらに進めると、すべてのフォーマット指定子は同じ年を返します:
SELECT
DATE_FORMAT('2024-12-12', '%X') AS "%X",
DATE_FORMAT('2024-12-12', '%x') AS "%x",
DATE_FORMAT('2024-12-12', '%Y') AS "%Y",
DATE_FORMAT('2024-12-12', '%y') AS "%y"; 結果:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2024 | 2024 | 2024 | 24 | +------+------+------+------+
フォーマット文字列/指定子の完全なリストについては、MariaDBフォーマット文字列を参照してください。
YEARWEEK() 機能
YEARWEEK() 関数は、指定された日付の年と週を返します。
例:
SELECT YEARWEEK('2023-01-01'); 結果:
+------------------------+
| YEARWEEK('2023-01-01') |
+------------------------+
| 202301 |
+------------------------+ 結果の年は、その年の最初と最後の週の日付引数の年とは異なる場合があります。
1年先に進むと、次のようになります。
SELECT YEARWEEK('2024-01-01'); 結果:
+------------------------+
| YEARWEEK('2024-01-01') |
+------------------------+
| 202353 |
+------------------------+
YEARWEEK() 関数は、モードを指定するためのオプションの2番目の引数を受け入れます。この関数から得られる実際の結果は、使用されているモードによって異なります。 mode引数を省略した場合、default_week_formatの値 システム変数が使用されます。
YEARWEEK()の方法をご覧ください それぞれのモードと例の詳細については、MariaDBで動作します。