DATENAME (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
この関数は、指定された date の指定された datepart を表す文字列を返します。
Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。
構文
DATENAME ( datepart , date )
引数
datepart
DATENAME
によって返される date 引数の特定の部分。 この表には、有効な datepart 引数をすべて一覧表示しています。
注意
DATENAME
は、datepart 引数に関して、ユーザー定義変数に相当するものは受け入れられません。
datepart | 省略形 |
---|---|
year | yy、yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy、y |
day | dd, d |
week | wk、ww |
weekday | dw、w |
hour | hh |
minute | mi、n |
second | ss, s |
millisecond | ms |
microsecond | mcs |
nanosecond | ns |
TZoffset | tz |
ISO_WEEK | ISOWK、ISOWW |
date
次のいずれかのデータ型に解決できる式。
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
date の場合、DATENAME
では、列式、式、文字列リテラル、ユーザー定義の変数が受け入れられます。 あいまいさの問題を排除するために、4 桁の西暦を使用してください。 2 桁の西暦については、「two digit year cutoff サーバー構成オプションの構成」を参照してください。
戻り値の型
nvarchar
戻り値
- -各日付構成要素とその省略形は、同じ値を返します。
戻り値は、SET LANGUAGE と、ログインの default language サーバー構成オプションの構成で設定した言語環境に依存します。 date がなんらかの形式の文字列リテラルである場合、戻り値は SET DATEFORMAT に依存します。 date が日付データ型や時刻データ型の列式である場合、SET DATEFORMAT によって戻り値が変わることはありません。
date パラメーターに date データ型引数がある場合、戻り値は SET DATEFIRST によって指定された設定に依存します。
TZoffset (datepart 引数)
datepart 引数が TZoffset (tz) で、date 引数にタイム ゾーン オフセットがない場合、DATEADD
は 0 を返します。
smalldatetime (date 引数)
date が smalldatetime のとき、DATENAME
は秒として 00 を返します。
date 引数に存在しない datepart を指定した場合に返される既定値
date 引数のデータ型に datepart が指定されていない場合、DATENAME
は、date 引数にリテラルが含まれる場合にのみ、その datepart の既定値を返します。
など、既定の年-月-日の任意の日付データ型は 1900年-01-01 です。 このステートメントでは、datepart 引数と date 引数にそれぞれ日付部分と時刻を表す値が指定されています。DATENAME
は 1900, January, 1, 1, Monday
を返します。
SELECT DATENAME(year, '12:10:30.123')
,DATENAME(month, '12:10:30.123')
,DATENAME(day, '12:10:30.123')
,DATENAME(dayofyear, '12:10:30.123')
,DATENAME(weekday, '12:10:30.123');
date が変数またはテーブル列として指定され、その変数または列のデータ型に datepart が指定されていない場合、DATENAME
はエラー 9810 を返します。 この例では、変数 "@t" は time データ型です。 time データ型の日付部分の年度が無効なため、この例は失敗します。
DECLARE @t time = '12:10:30.123';
SELECT DATENAME(year, @t);
解説
次の句で DATENAME
を使用します。
- GROUP BY
- HAVING
- ORDER BY
- SELECT <list>
- WHERE
SQL Server , 、DATENAME は、文字列リテラルを暗黙的にキャスト、 datetime2 型です。 つまり、DATENAME
では、日付が文字列として渡される場合、YDM 形式がサポートされません。 文字列を明示的にキャストする必要があります、 datetime または smalldatetime YDM 形式を使用する型。
例
この例は、指定された日付の日付部分を返します。 SELECT ステートメントの datepart
引数の代わりにテーブルの datepart 値を使用します。
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
結果セットは次のとおりです。
datepart | 戻り値 |
---|---|
year、yyyy、yy | 2007 |
quarter、qq、q | 4 |
month、mm、m | 10 月 |
dayofyear、dy、y | 303 |
day、dd、d | 30 |
week、wk、ww | 44 |
weekday、dw | Tuesday |
hour、hh | 12 |
minute、n | 15 |
second、ss、s | 32 |
millisecond、ms | 123 |
microsecond、mcs | 123456 |
nanosecond、ns | 123456700 |
TZoffset、tz | +05:10 |
ISO_WEEK、ISOWK、ISOWW | 44 |
Azure Synapse Analytics および Analytics Platform System (PDW)
この例は、指定された日付の日付部分を返します。 SELECT ステートメントの datepart
引数の代わりにテーブルの datepart 値を使用します。
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
結果セットは次のとおりです。
datepart | 戻り値 |
---|---|
year、yyyy、yy | 2007 |
quarter、qq、q | 4 |
month、mm、m | 10 月 |
dayofyear、dy、y | 303 |
day、dd、d | 30 |
week、wk、ww | 44 |
weekday、dw | Tuesday |
hour、hh | 12 |
minute、n | 15 |
second、ss、s | 32 |
millisecond、ms | 123 |
microsecond、mcs | 123456 |
nanosecond、ns | 123456700 |
TZoffset、tz | +05:10 |
ISO_WEEK、ISOWK、ISOWW | 44 |