概要
MONTHNAME では、入力として InterSystems IRIS 日付整数、$HOROLOG 値や $ZTIMESTAMP 値、ODBC 形式の日付文字列、またはタイムスタンプが取得されます。
date-expression タイムスタンプには、データ型 %Library.PosixTimeOpens in a new tab (エンコードされた 64 ビットの符号付き整数) またはデータ型 %Library.TimeStampOpens in a new tab (yyyy-mm-dd hh:mm:ss.fff) のいずれかを指定できます。
タイムスタンプの時刻部分は評価されないので省略可能です。
MONTHNAME は、該当する月の名前 (January ~ December) を返します。この返り値は最長 15 文字の文字列です。
MONTHNAME は、指定された日付が有効であることをチェックします。年は 0001 ~ 9999、月は 01 ~ 12、日はその月に適切な数字 (例えば、02/29 はうるう年のみ有効) である必要があります。日付が無効の場合、MONTHNAME は SQLCODE -400 <ILLEGAL VALUE> エラーを発行します。
月の名前は、既定のアメリカ英語の省略のない月の名前になります。これらの月の名前の値を変更するには、MONTH_NAME オプションで SET OPTION コマンドを使用します。
DATENAME 関数を使用して、同じ月名情報を取得することもできます。TO_DATE を使用すると、他の日付要素で月の名前または月名の省略形を検索できます。月に対応する整数を返すには、MONTH、DATEPART、または TO_DATE を使用します。
この関数は、ObjectScript から MONTHNAME()Opens in a new tab メソッド・コールを使用して呼び出すこともできます。
$SYSTEM.SQL.Functions.MONTHNAME(date-expression)
例
以下の例は、日付式 (February 22, 2018) の月は 2 月なので、両方とも、文字列 "February" を返します。
SELECT {fn MONTHNAME('2018-02-22')} AS NameOfMonth
SELECT {fn MONTHNAME(64701)} AS NameOfMonth
以下の例はすべて、現在の月を返します。
SELECT {fn MONTHNAME({fn NOW()})} AS MnameNow,
{fn MONTHNAME(CURRENT_DATE)} AS MNameCurrDate,
{fn MONTHNAME(CURRENT_TIMESTAMP)} AS MNameCurrTS,
{fn MONTHNAME($HOROLOG)} AS MNameHorolog,
{fn MONTHNAME($ZTIMESTAMP)} AS MNameZTS
以下の埋め込み SQL の例は、MONTHNAME が無効な日付 (2017 年はうるう年ではない) をどのように処理するかを示しています。
SET testdate="2017-02-29"
&sql(SELECT {fn MONTHNAME(:testdate)} INTO :a)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE,!
WRITE %msg,! }
ELSE {
WRITE !,"returns: ",a }
QUIT
<ILLEGAL VALUE> を示す %msg と共に SQLCODE -400 エラー・コードが発行されます。