TalendDateルーチン - 7.3

Talend Data Fabric Studio ユーザーガイド

Version
7.3
Language
日本語 (日本)
Product
Talend Data Fabric
Module
Talend Studio
Content
ジョブデザインと開発

[TalendDate]ルーチンには、さまざまな種類の操作を実行し、日付式の形式について確認できる関数が複数含まれています。

警告: パターンがyyyy-MM-ddyyyy-MM-dd HH:mm:ssに設定されている場合を除き、これらの関数では内部でSimpleDateFormatというJavaクラスが使用されています。この場合、パフォーマンス向上のため、入力された日付文字列の形式チェックは行われません。この2つのパターンのいずれかを使う場合は、入力された日付文字列が、設定されたパターンと正確に一致することを確認する必要があります。

[Repository] (リポジトリー)ツリービューにあるシステムルーチンフォルダーの下の[TalendDate]ノードをダブルクリックすると、これらの関数にアクセスできます。

関数

説明

構文

addDate

n日、nか月、n時間、n分またはn秒をJavaの日付に追加し、新しい日付を返します。

日付形式は:yyyyMMddHHmmssSSSです。

TalendDate.addDate("初期日付文字列", "日付形式 - 例: yyyy/MM/dd", 整数 n,"を追加する日付の一部の形式-例:yyyy").

compareDate

指定した形式に従って2つの日付のすべての部分を比較します。日付が同一の場合は0を、最初の日付が早い場合は-1を、2番目の日付が早い場合は1を返します。

patternパラメーターは日付形式(たとえば、"yyyy-mm-dd")を指定します。

TalendDate.compareDate(Date date1, Date date2,[String pattern])

diffDate

指定した比較パラメーターに従って、日、月、または年に関して2つの日付の差を返します。

dateTypeパラメーターは、比較される日付部分を指定します(たとえば、"yyyy")。ignoreDSTパラメーターは、DSTが考慮される必要があるかどうかを指定します。

TalendDate.diffDate(Date date1, Date date2,[String dateType],[boolean ignoreDST])

diffDateFloor

指定した比較パラメーターに従って、年、月、日、時間、分、秒またはミリ秒に関して2つの日付の差を切捨てで返します。

TalendDate.diffDateFloor(Date date1(), Date date2, "format of the part of the date to be compared - eg.:MM")

diffDateIgnoreDST

指定した比較パラメーターに従って、DSTを無視して、日、月、または年に関して2つの日付間の差を返します。

dateTypeパラメーターは、比較される日付部分の形式(たとえば、"yyyy")を指定します。

TalendDate.diffDateIgnoreDST(Date1(), Date2(),[String dateType])

formatDate

指定した形式に対応する日付文字列を返します。

TalendDate.formatDate("日付形式-例: yyyy-MM-dd HH:mm:ss", 形式指定するDate()

formatDateInTimeZone

特定のタイムゾーンで、日付を特定の形式(日時文字列)にフォーマットします。

TalendDate.formatDateInTimeZone(String datePattern, Date tate, String TimeZoneID)

formatDateInUTC

UTCタイムゾーンで、日付を特定の形式(日時文字列)にフォーマットします。

TalendDate.formatDateInUTC(String datePattern, Date tate, String TimeZoneID)

formatDateLocale

対象の国で使用されている形式に従って、日付を日付/時間文字列に変更します。

TalendDate.formatDateLocale("format target", java.util.Date date, "language or country code")

formatDatetimeoffset

日付をローカルタイムゾーン形式文字列でMSSQL 2008タイプのdatetimeoffset ISO 8601文字列(yyyy-MM-dd HH:mm:ss.SSSXXX)にフォーマットします(JDK7にサポートされます)。

TalendDate.formatDatetimeoffset(Date date)

getCurrentDate

現在の日付を返します。入力パラメーターは必要ありません。

TalendDate.getCurrentDate()

getDate

指定された形式(オプション)で現在の日付と時間を返します。この文字列には、固定文字列または日付にリンクされた変数を含めることができます。デフォルトでは、文字列はDD/MM/CCYYの形式で返されます。

TalendDate.getDate("文字列の形式-例: CCYY-MM-DD")

getFirstDayOfMonth

イベントの日付を現在の月の初日に変更し、新しい日付を返します。

TalendDate.getFirstDayMonth(Date)

getLastDayOfMonth

イベントの日付を現在の月の末日に変更し、新しい日付を返します。

TalendDate.getLastDayMonth(Date)

getPartOfDate

指定した形式に従って日付の一部を返します。この文字列には、固定文字列または日付にリンクされた変数を含めることができます。

TalendDate.getPartOfDate("取得する日付の一部を示す文字列", "解析する日付の形式の文字列")

getRandomDate

ISO形式でランダムな日付を返します。

TalendDate.getRandomDate("文字列の日付形式", String minDate, String maxDate)

isDate

日付文字列が指定した形式に対応しているかどうかを確認します。結果に従って、trueまたはfalseのBoolean値を返します。

TalendDate.isDate(Date() to be checked, "確認する日付の形式-例: yyyy-MM-dd HH:mm:ss")

isDateStrict

厳密なルールを使って、正しいパータンの日付として文字列値をテストします。この検証はJava 8タイムツールを使用します。タイムゾーンオフセットの範囲は-18:00から18:00までに制限されています。stringDateが正しいパターンの日付文字列であるかどうかを示すブール値を返します。

TalendDate.isDateStrict(String stringDate, String pattern)

parseDate

文字列を日付に変更します。指定された形式で日付を返します。

TalendDate.parseDate("format date of the string to be parsed", "string in the format of the date to be parsed",["boolean about whether parsing is set to be lenient, that is to say, accepting the heuristic match with the format"])

parseDateInUTC

文字列をUTCの日付に変更します。UTC形式で日付を返します。

本番環境で実行しているビッグデータジョブでは、異なるタイムゾーンで設置されている複数のマシンが関わるため、日時解析の正しい出力を確実に行うために、常にこのルーチンを使用する必要があります。

TalendDate.parseDateInUTC("format date of the string to be parsed", "string in the format of the date to be parsed", ["boolean about whether parsing is set to be lenient, that is to say, accepting the heuristic match with the format"])

parseDateLocale

指定した形式に従って文字列を解析し、日付を抽出します。指定したローカル形式に従って日付を返します。

TalendDate.parseDateLocale("解析する文字列の日付形式", "解析する日付の形式の文字列", "国または言語に対応するコード")

setDate

指定した日付の部分と値および指定した形式に従って日付の一部を変更します。

TalendDate.setDate(Date, whole n, "変更する日付の一部の形式-例:yyyy")

TO_CHAR

日付を文字列に変換します。

TalendDate.TO_CHAR(date[,format])

  • [date] (日付): 文字列に変換する日付の値。
  • [format] (形式): 戻り値の形式を定義する文字列。

TO_DATE

文字列を日付/時刻のデータ型に変換します。

TalendDate.TO_DATE(string[, format])

  • [string] (文字列): 日付/時刻のデータ型に変換する文字列。
  • [format] (形式): string引数の一部に一致する形式文字列。指定されていない場合は、stringの値はは日付形式MM/dd/yyyy HH:mm:ss.SSSである必要があります。

たとえば、TalendDate.TO_DATE("04/24/2017 13:55:42.123")によりMon Apr 24 13:55:42 CST 2017が返されます。

ADD_TO_DATE

日時の値の一部に指定の数量を追加し、ユーザーが関数に渡す日付と同じ形式で日付を返します。

TalendDate.ADD_TO_DATE(date, format, amount)

  • [date] (日付): 変更する日付の値。
  • [format] (形式): 変更する日付の値の一部を指定する形式文字列。
    • 年に使用できる有効な形式文字列: YYYYYYYYYY
    • 月に使用できる有効な形式文字列: MONTHMMMON
    • 日に使用できる有効な形式文字列: DDDDDDDAYDY
    • 時に使用できる有効な形式文字列: HHHH12HH24
    • 分に使用できる有効な形式文字列: MI
    • 秒に使用できる有効な形式文字列: SS
    • ミリ秒に使用できる有効な形式文字列: MS
  • [amount] (数量): 日付の値の変更に使用する年、月、日、時などの数を指定する整数値。

例:

TalendDate.getCurrentDate()Mon Apr 24 14:26:03 CST 2017が返される場合、

TalendDate.ADD_TO_DATE(TalendDate.getCurrentDate(), "YY", 1)ではTue Apr 24 14:26:03 CST 2018が返されます。

警告:

日付形式の"yyyy"と"YYYY"はほとんどの場合、同じ年の数字を返しますが、"YYYY"を以下の位置に使用した場合、想定どおりに機能しないことがあります。

  • 年の最初の週。年が週の最初の日で開始しない場合。
  • 年の最後の週。年が週の最後の日で終了しない場合。

たとえば、2016年1月2日の3日前の日付がどうなるかを計算する場合、次のコードは間違った日付を返します。

System.out.println(TalendDate.formatDate("YYYY-MM-dd", TalendDate.addDate(TalendDate.TO_DATE("01/02/2016 08:10:30.123"), -3, "dd")));

他方、次のコードは想定どおりに機能します。

System.out.println(TalendDate.formatDate("yyyy-MM-dd", TalendDate.addDate(TalendDate.TO_DATE("01/02/2016 08:10:30.123"), -3, "dd")));

したがって、通常は"yyyy"を使用してください。これは暦年を表します。