Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

YEAR

日付式に対して年を返す日付関数です。

Synopsis

YEAR(date-expression)
{fn YEAR(date-expression)}

引数

date-expression Caché 日付整数、ODBC 日付、またはタイムスタンプとして評価される式。この式は、列の名前、他のスカラ関数の結果、または日付やタイムスタンプのリテラルとすることができます。

概要

YEAR は、Caché 日付整数、ODBC 形式の日付文字列、またはタイムスタンプを入力として取ります。

date-expression タイムスタンプはデータ型 %Library.TimeStampOpens in a new tab (yyyy-mm-dd hh:mm:ss.fff) です。

date-expression は、%Library.FilemanDate、%Library.FilemanTimestamp、%MV.Date のいずれかのデータ型として指定することもできます。

年 (yyyy) 部分は、1840 から 9999 までの範囲の 4 桁の整数でなければなりません。ただし、ユーザが指定した日付の検証や範囲チェックは行われません。無効な日付 (2005-02-31 など) や範囲外の日付 (1830-02-20 など) を指定しても、YEAR ではその年部分が返されます。1840 ~ 9999 の範囲外の年の値、負の数、および小数は、指定したとおりに返されます。2 桁の年は、4 桁の年に拡張されません

YEAR は対応する年を 4 桁の整数で返します。

Note:

Caché の日付の内部表現と互換性を持たせるために、すべての年の値は、1840 から 9999 までの 4 桁の整数で表記することを強くお勧めします。

TO_DATE および TO_CHAR の各 SQL 関数は、1840 年より前の年を表現できる “ユリウス日” をサポートしています。ObjectScript では、このようなユリウス日をサポートするメソッドを呼び出すことができます。

YEAR は、年の部分が 1 つまたは複数のゼロの文字列 ('0' または '0000') の場合、あるいは非数値の場合に、ゼロを返します。YEAR は、最初の数値文字列を年の値として解釈します。そのため、日付文字列の年の部分を省略したり ('-mm-dd hh:mm:ss')、または日の部分を省略すると ('hh:mm:ss')、1 番目の数値 ('-mm' または 'hh') を年の値として処理します。したがって、不明な年の値に対して、プレースホルダを指定する必要があります。Caché との互換性に関しては、一般的に、9999 が好ましい値です。

年形式の既定は、4 桁の年です。この年表示の既定を変更するには、YEAR_OPTION オプションで SET OPTION コマンドを使用します。

YEARMONTHDAYDAYOFMONTHHOURMINUTESECONDDATEPART または DATENAME 関数を使用して、同じ要素を取得することもできます。DATEPART および DATENAME では、年の値に対して値と範囲のチェックが行われます。

この関数は、ObjectScript から YEAR()Opens in a new tab メソッド呼び出しを使用して呼び出すこともできます。

$SYSTEM.SQL.YEAR(date-expression)

以下の例は、整数 2004 を返します。検証は行われません。

SELECT YEAR('2004-02-16 12:45:37') AS Year_Given
SELECT {fn YEAR(59590)} AS Year_Given

以下の例は、年フィールドに非数値のプレースホルダが含まれているため、年に 0 を返します。区切り文字 (–) は、特定の文字 (列) の後ろに置く必要があります。そうしないと、月が年の値として返されます。

年のプレースホルダとしてのアスタリスク。

SELECT {fn YEAR('*-02-16')} AS Year_Given

年のプレースホルダとしての空白文字。

SELECT YEAR(' -02-16') AS Year_Given

以下の例は、現在の年を返します。

SELECT YEAR(GETDATE()) AS Year_Now

以下の埋め込み SQL の例は、2 つの関数から現在の年を返します。CURRENT_DATE 関数は、DATE データ型を返します。NOW 関数は、TIMESTAMP データ型を返します。YEAR は、両方の入力データ型に 4 桁の年を表す整数を返します。

  &sql(SELECT {fn YEAR(CURRENT_DATE)},
              {fn YEAR({fn NOW()})} INTO :a,:b)
  IF SQLCODE'=0 {
    WRITE !,"Error code ",SQLCODE }
  ELSE {
    WRITE !,"CURRENT_DATE year is: ",a
    WRITE !,"NOW year is: ",b }

以下の埋め込み SQL の例は、無効な日付 (2001 年はうるう年ではない) や範囲外の日付を指定しても、YEAR ではその年部分が返されることを示しています。

   SET testdate1="2001-02-29"
   SET testdate2="1835-02-19"
   &sql(SELECT YEAR(:testdate1),
               YEAR(:testdate2) INTO :a,:b)
   IF SQLCODE'=0 {
     WRITE !,"Error code ",SQLCODE }
   ELSE {
     WRITE !,"invalid date returns: ",a
     WRITE !,"out-of-range date returns: ",b }
   QUIT

関連項目

FeedbackOpens in a new tab