SQL Serverでは、T-SQLのDATENAME()関数は、指定した日付の部分を表す文字列を返します。 たとえば、2021-01-07を渡すと、SQL Serverは月の部分(January)だけを返すことができます。

DATENAME()の戻り値の型はnvarcharです。

構文

DATENAME()構文は次のようになります。

DATENAME ( datepart , date )

ここで、datepart は文字列を返す date の部分(日付または時間値)を表します。

例 1

ここでは、日付から月の成分を返す基本例を示します。

SELECT DATENAME(month, '2021-01-07') AS Result;

Result:

+----------+| Result ||----------|| January |+----------+

例2

この例では、変数に日付を割り当て、DATEPART()の複数のインスタンスを使用して、その日付のさまざまな部分を取得します。

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(year, @date) AS Year, DATENAME(quarter, @date) AS Quarter, DATENAME(month, @date) AS Month, DATENAME(dayofyear, @date) AS 'Day of Year', DATENAME(day, @date) AS Day, DATENAME(week, @date) AS Week, DATENAME(weekday, @date) AS Weekday;

結果:

+--------+-----------+---------+---------------+-------+--------+-----------+| Year | Quarter | Month | Day of Year | Day | Week | Weekday ||--------+-----------+---------+---------------+-------+--------+-----------|| 2018 | 2 | June | 153 | 2 | 22 | Saturday |+--------+-----------+---------+---------------+-------+--------+-----------+

例3

また、日付からさまざまな時間部分を取得することができます。

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(hour, @date) AS Hour, DATENAME(minute, @date) AS Minute, DATENAME(second, @date) AS Second, DATENAME(millisecond, @date) AS Millsecond, DATENAME(microsecond, @date) AS Microsecond, DATENAME(nanosecond, @date) AS Nanosecond;

Result:

+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+

Example 4

また、TZoffsetISO_WEEKの日付部分を取得できます。

TZoffsetは分数(符号あり)として返されます。 ISO_WEEK datepart は ISO week-date system (ISO 8601 標準の一部) を参照しており、これは週の番号付けシステムです。

DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00';SELECT DATENAME(TZoffset, @date) AS 'Time Zone Offset', DATENAME(ISO_WEEK, @date) AS 'ISO_WEEK';

Result:

+--------------------+------------+| Time Zone Offset | ISO_WEEK ||--------------------+------------|| +08:00 | 22 |+--------------------+------------+

この例では、日付を datetimeoffset 形式に設定しており、タイムゾーンオフセットを含んでいます。 TZoffset は分単位で返されます。

DATENAME()の結果は、しばしばDATEPART()の結果に似ています(日付部分のほとんどが数値であるため)。 しかし、DATEPART() は文字列ではなく、整数を返します。 したがって、DATEPART() は月 (および曜日成分) を数値形式で返します (たとえば、January の代わりに 1)。

短い月名の取得

月名が必要だが 3 文字の短縮形 (たとえば、January の代わりに Jan) であれば、記事 5 Ways to Get the Short Month Name from a Date in SQL Server.

でチェックしてみてください。

コメントを残す

メールアドレスが公開されることはありません。