対象者:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
アナリティクスプラットフォームシステム(PDW)
Microsoft FabricにおけるSQLデータベース
この関数は、指定された date の指定された datepart を表す文字列を返します。
Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。
構文
DATENAME ( datepart , date )
引数
datepart
によって返される DATENAME 引数の特定の部分。 この表には、有効な 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を用いて設定した言語環境や、ログインの デフォルトの言語サーバー設定オプション によって決まります。 返り値は日付が一部のフォーマットの文字列リテラルであるかどうかのSET DATEFORMATに依存します。 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(並び替え)
- 選択 <リスト>
- WHERE
SQL Server , 、DATENAME は、文字列リテラルを暗黙的にキャスト、 datetime2 型です。 つまり、DATENAME では、日付が文字列として渡される場合、YDM 形式がサポートされません。 文字列を明示的にキャストする必要があります、 datetime または smalldatetime YDM 形式を使用する型。
例
この例は、指定された日付の日付部分を返します。 SELECT ステートメントの 引数の代わりにテーブルの 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 値を使用します。
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 |