原文链接:https://www.ibm.com/docs/en/iis/11.5?topic=functions-date-time
你可以使用日期和时间函数在Transformer阶段执行关于日期和时间的各种操作。
这些函数中,用于指定日期、时间或时间戳的参数采用特定格式的字符串:
带有星期几的参数的函数采用字符串来指定星期几。星期以三个字母的缩写或全名指定。例如,字符串 “thu” 和 “thursday” 都是有效的。
以下是表达式编辑器中“日期与时间”类别中的一些函数。方括号表示参数是可选的。示例展示了该函数在Transformer阶段的派生字段中的使用。
返回作业运行的日期。
输入: 无
输出: 日期 (date)
示例: 使用此函数在Transformer阶段的输出数据中添加一个包含日期的新列。
CurrentDate()
返回作业运行的时间。
输入: 无
输出: 时间 (time)
示例: 使用此函数在Transformer阶段的输出数据中添加一个包含时间的新列。
CurrentTime()
返回作业运行的时间,包括微秒。
输入: 无
输出: 时间 (time)
示例: 使用此函数在Transformer阶段的输出数据中添加一个包含时间的新列。必须将列元数据中的“Extended”字段设置为“Microseconds”以包含完整的时间。
CurrentTimeMS()
返回作业运行的日期和时间戳。
输入: 无
输出: 时间戳 (timestamp)
示例: 使用此函数在Transformer阶段的输出数据中添加一个包含时间戳的新列。
CurrentTimestamp()
返回作业运行的日期和时间戳,包括微秒。
输入: 无
输出: 时间戳 (timestamp)
示例: 使用此函数在Transformer阶段的输出数据中添加一个包含时间戳的新列。必须将列元数据中的“Extended”字段设置为“Microseconds”以包含完整的时间戳。
CurrentTimestampMS()
通过将整数添加到基准日期来返回日期字符串。整数可以为负以返回早于基准日期的日期。此函数在IBM? InfoSphere? Information Server,版本11.3中已弃用。请使用DateFromDaysSince2函数。
输入: number (int32), [baseline_date_string (string)]
输出: 日期 (date)
示例: 如果 mylink.myintcol
包含整数18250,mylink.mydatecol
包含日期1958–08–18,则以下三个函数是等效的,并返回日期2008–08–05:
DateFromDaysSince(18250, "1958-08-18")
DateFromDaysSince(mylink.myintcol, "1958-08-18")
DateFromDaysSince(mylink.myintcol, mylink.mydatecol)
如果 mylink.mynegintcol
包含整数-1,mylink.mydatecol
包含日期1958–08–18,则以下三个函数是等效的,并返回日期1958–08–17:
DateFromDaysSince(-1, "1958-08-18")
DateFromDaysSince(mylink.mynegintcol, "1958-08–18")
DateFromDaysSince(mylink.mynegintcol, mylink.mydatecol)
通过将整数添加到基准日期来返回日期对象。整数可以为负以返回早于基准日期的日期。
输入: number (int32), [baseline_date_object (date)]
输出: 日期 (date)
示例: 如果 mylink.myintcol
包含整数18250,mylink.mydatecol
包含日期1958–08–18,则以下三个函数是等效的,并返回日期2008–08–05:
DateFromDaysSince2(18250, "1958-08-18")
DateFromDaysSince2(mylink.myintcol, "1958-08–18")
DateFromDaysSince2(mylink.myintcol, mylink.mydatecol)
如果 mylink.mynegintcol
包含整数-1,mylink.mydatecol
包含日期1958–08–18,则以下三个函数是等效的,并返回日期1958–08–17:
DateFromDaysSince2(-1, "1958-08–18")
DateFromDaysSince2(mylink.mynegintcol, "1958-08–18")
DateFromDaysSince2(mylink.mynegintcol, mylink.mydatecol)
根据给定的年、月和日,返回一个日期,这些年、月和日作为三个单独的值给出。
输入: years (int32), months (int32), dayofmonth (int32)
输出: 日期 (date)
示例: 如果 mylink.yearcol
包含值2010,mylink.monthcol
包含值12,mylink.dayofmonthcol
包含值2,则以下两个函数是等效的,并返回日期2010–12–02。
DateFromComponents(2010, 12, 2)
DateFromComponents(mylink.yearcol, mylink.monthcol, mylink.dayofmonthcol)
根据给定的儒略日返回日期。
输入: julianday (uint32)
输出: 日期 (date)
示例: 如果 mylink.myjulcol
包含值2454614,则以下两个函数是等效的,并返回日期2008–05–27。
DateFromJulianDay(2454614)
DateFromJulianDay(mylink.myjulcol)
返回给定的日期,应用来自给定年份偏移、月份偏移和月份日期偏移的偏移量,这三个值分别作为输入。偏移值可以是正数、零或负数。
DateOffsetByComponents("2011-08-18", 2, 0, 0)
DateOffsetByComponents(mylink.basedate, mylink.yearos, mylink.monthos, mylink.dayofmonthos)
如果 mylink.basedate 包含 2011-08-18,而 mylink.yearos 包含值 -2,mylink.monthos 包含值 0,mylink.dayofmonthosol 包含值 0,那么以下两个函数是等效的,都返回日期 2009–08–18。
DateOffsetByComponents("2011-08-18", -2, 0, 0)
DateOffsetByComponents(mylink.basedate, mylink.yearos, mylink.monthos, mylink.dayofmonthos)
返回从源日期到给定日期的天数。在IBM InfoSphere Information Server 11.3中,此函数已被弃用,请使用DaysSinceFromDate2
函数。
DaysSinceFromDate(mylink.mygivendate, mylink.mysourcedate)
DaysSinceFromDate("2008-08-18", "1958-08-18")
返回从源日期到给定日期的天数。
DaysSinceFromDate2(mylink.mygivendate, mylink.mysourcedate)
DaysSinceFromDate2("2008-08-18", "1958-08-18")
返回给定基准日期的月份中的天数。
DaysInMonth(mylink.mysourcedate)
DaysInMonth("1958-08-18")
返回给定基准日期的年份中的天数。
DaysInYear(mylink.mysourcedate)
DaysInYear("2012-08-18")
如果 mylink.mysourcedate 包含日期 2011–08–18,那么以下两个函数是等效的,都返回整数值 365。
DaysInYear(mylink.mysourcedate)
DaysInYear("2011-08-18")
返回给定日期偏移给定天数后的日期。偏移值可以是正数、零或负数。
DateOffsetByDays("2011-08-18", 2)
DateOffsetByDays(mylink.basedate, mylink.dayoffset)
如果 mylink.basedate 包含 2011-08-18,而 mylink.dayoffset 包含值 -31,那么以下两个函数是等效的,都返回日期 2011–07–18。
DateOffsetByDays("2011-08-18", -31)
DateOffsetByDays(mylink.basedate, mylink.dayoffset)
返回时间的小时部分。
HoursFromTime(mylink.mytime)
HoursFromTime("22:30:00")
从给定日期返回儒略日数。
JulianDayFromDate("2008–05–27")
JulianDayFromDate(mylink.mydate)
返回时间的微秒部分。
MicroSecondsFromTime(mylink.mytime)
当然,以下是使用Markdown格式的翻译:
返回从午夜到给定时间的秒数。
mylink.mytime
包含时间00:30:52
,则以下两个函数等效,返回值为1852
:MidnightSecondsFromTime("00:30:52")
MidnightSecondsFromTime(mylink.mytime)
返回时间的分钟部分。
mylink.mytime
包含时间22:30:52
,则以下两个函数等效,返回值为30
:MinutesFromTime("22:30:52")
MinutesFromTime(mylink.mytime)
从给定日期返回月份中的日期。
mylink.mydate
包含日期2008-08-18
,则以下两个函数等效,返回值为18
:MonthDayFromDate("2008-08-18")
MonthDayFromDate(mylink.mydate)
从给定日期返回月份编号。
mylink.mydate
包含日期2008-08-18
,则以下两个函数等效,返回值为8
:MonthFromDate("2008-08-18")
MonthFromDate(mylink.mydate)
返回源日期之后最接近的指定星期几的日期。星期几用全名或缩写指定。
mylink.mysourcedate
包含日期2008-08-18
,星期四指定为Thursday
,则以下两个函数等效,返回值为2008-08-21
:NextWeekdayFromDate("2008-08-18", "thursday")
NextWeekdayFromDate(mylink.mysourcedate, "thu")
返回源日期之后指定周数偏移的星期几的日期。星期几用全名或缩写指定,偏移值可以为正、负或零。
输入:基准日期(date),星期几(string),周偏移(int32)
输出:日期(date)
示例:如果mylink.mydate
包含日期2009-08-18
,星期四指定为thursday
,偏移为1
,则以下两个函数等效,返回值为2009-08-20
:
NthWeekdayFromDate("2009-08-18", "thursday", 1)
NthWeekdayFromDate(mylink.mydate, "thu", 1)
返回两周前的星期四的日期。如果mylink.mydate
包含日期2009-08-18
,星期四指定为thursday
,偏移为-2
,则以下两个函数等效,返回值为2009-08-06
:
NthWeekdayFromDate("2009-08-18", "thursday", -2)
NthWeekdayFromDate(mylink.mydate, "thu", -2)
返回源日期之前最近的指定星期几的日期。星期几用全名或缩写指定。
mylink.mysourcedate
包含日期2008-08-18
,星期四指定为thursday
,则以下两个函数等效,返回值为2008-08-14
:PreviousWeekdayFromDate("2008-08-18", "thursday")
PreviousWeekdayFromDate(mylink.mysourcedate, "thu")
返回时间的秒部分。
mylink.mytime
包含时间22:30:52
,则以下两个函数等效,返回值为52
:SecondsFromTime("22:30:52")
SecondsFromTime(mylink.mytime)
返回两个时间戳字符串之间的秒数。此函数已弃用,请使用SecondsSinceFromTimestamp2函数。
mylink.mytimestamp
包含时间戳2008-08-18 22:30:52
,而mylink.mytimestamp_base
包含时间戳2008-08-19 22:30:52
,则以下两个函数等效,返回值为-86400
:SecondsSinceFromTimestamp("2008-08-18 22:30:52", "2008-08-19 22:30:52")
SecondsSinceFromTimestamp(mylink.mytimestamp, mylink.mytimestamp_base)
返回两个时间戳对象之间的秒数。
mylink.mytimestamp
包含时间戳2008-08-18 22:30:52
,而mylink.mytimestamp_base
包含时间戳2008-08-19 22:30:52
,则以下两个函数等效,返回值为-86400
:SecondsSinceFromTimestamp2("2008-08-18 22:30:52", "2008-08-19 22:30:52")
SecondsSinceFromTimestamp2(mylink.mytimestamp, mylink.mytimestamp_base)
返回系统时间和日期的格式化字符串。
21:48 20 Jun 2008”。
TimeDate()
从给定的小时、分钟、秒和微秒返回时间,这些值分别作为四个独立的值给出。
mylink.hourcol
包含值10
,mylink.mincol
包含值12
,mylink.seccol
包含值2
,mylink.mseccol
包含0
,则以下两个函数等效,返回时间10:12:02.0
:TimeFromComponents(10, 12, 2, 0)
TimeFromComponents(mylink.hourcol, mylink.mincol, mylink.seccol, mylink.mseccol)
返回给定秒数自午夜以来的时间。
mylink.mymidnightseconds
包含值240
,则以下两个函数等效,返回值00:04:00
:TimeFromMidnightSeconds("240")
TimeFromMidnightSeconds(mylink.mymidnightseconds)
从基准时间开始,使用小时偏移、分钟偏移和秒偏移各自作为独立的值,返回带有偏移的时间。
mylink.basetime
包含14:05:29
,mylink.houros
包含值2
,mylink.minos
包含值0
,mylink.secos
包含值20
,则以下两个函数等效,返回时间16:05:49
。TimeOffsetByComponents("14:05:29", 2, 0, 20)
TimeOffsetByComponents(mylink.basetime, mylink.houros, mylink.minos, mylink.secos)
从基准时间开始,使用秒偏移,返回带有偏移的时间。
mylink.basetime
包含14:05:29.30
,mylink.secos
包含值2.5
,则以下两个函数等效,返回时间14:05:31.80
。TimeOffsetByComponents("14:05:29.30", 2.5)
TimeOffsetByComponents(mylink.basetime, mylink.secos)
从给定的日期和时间返回时间戳。
mylink.mydate
包含日期2008-08-18
,而mylink.mytime
包含时间22:30:52
,则以下两个函数等效,返回时间戳2008-08-18 22:30:52
:TimestampFromDateTime("2008-08-18", "22:30:52")
TimestampFromDateTime(mylink.mydate, mylink.mytime)
从基准时间戳字符串和秒数返回时间戳。此函数已弃用,请使用TimestampFromSecondsSince2函数。
mylink.myseconds
包含值2563
,而mylink.timestamp_base
包含时间戳2008-08-18 22:30:52
,则以下两个函数等效,返回时间戳2008-08-18 23:13:35
:TimestampFromSecondsSince("2563", "2008-08-18 22:30:52")
TimestampFromSecondsSince(mylink.myseconds, mylink.timestamp_base)
从基准时间戳对象和秒数返回时间戳。
mylink.myseconds
包含值2563
,而mylink.timestamp_base
包含时间戳2008-08-18 22:30:52
,则以下两个函数等效,返回时间戳2008-08-18 23:13:35
:TimestampFromSecondsSince2("2563", "2008-08-18 22:30:52")
TimestampFromSecondsSince2(mylink.myseconds, mylink.timestamp_base)
从给定的UNIX time_t
字符串值返回时间戳。
timet_string
(int32)mylink.mytimet
包含值1234567890
,则以下两个函数等效,返回时间戳2009-02-13 23:31:30
:TimestampFromTimet("1234567890")
TimestampFromTimet(mylink.mytimet)
返回两个时间戳字符串之间的秒数。在IBM InfoSphere Information Server 11.3版本中,此函数已弃用。请使用SecondsSinceFromTimestamp2函数。
mylink.mytimestamp
包含时间戳2008–08–18 22:30:52
,而mylink.mytimestamp_base
包含时间戳2008–08–19 22:30:52
,则以下两个函数等效,返回值为-86400
: SecondsSinceFromTimestamp("2008–08–18 22:30:52", "2008–08–19 22:30:52")
SecondsSinceFromTimestamp(mylink.mytimestamp, mylink.mytimestamp_base)
返回两个时间戳对象之间的秒数。
mylink.mytimestamp
包含时间戳2008–08–18 22:30:52
,而mylink.mytimestamp_base
包含时间戳2008–08–19 22:30:52
,则以下两个函数等效,返回值为-86400
: SecondsSinceFromTimestamp2("2008–08–18 22:30:52", "2008–08–19 22:30:52")
SecondsSinceFromTimestamp2(mylink.mytimestamp, mylink.mytimestamp_base)
返回系统时间和日期的格式化字符串。
TimeDate()
从给定的小时、分钟、秒和微秒返回时间,这些值分别作为四个独立的值给出。
mylink.hourcol
包含值10
,mylink.mincol
包含值12
,mylink.seccol
包含值2
,mylink.mseccol
包含0
,则以下两个函数等效,返回时间10:12:02.0
: TimeFromComponents(10, 12, 2, 0)
TimeFromComponents(mylink.hourcol, mylink.mincol, mylink.seccol, mylink.mseccol)
返回给定秒数自午夜以来的时间。
mylink.mymidnightseconds
包含值240
,则以下两个函数等效,返回值00:04:00
: TimeFromMidnightSeconds("240")
TimeFromMidnightSeconds(mylink.mymidnightseconds)
从基准时间开始,使用小时偏移、分钟偏移和秒偏移各自作为独立的值,返回带有偏移的时间。
mylink.basetime
包含14:05:29
,mylink.houros
包含值2
,mylink.minos
包含值0
,mylink.secos
包含值20
,则以下两个函数等效,返回时间16:05:49
。 TimeOffsetByComponents("14:05:29", 2, 0, 20)
TimeOffsetByComponents(mylink.basetime, mylink.houros, mylink.minos, mylink.secos)
从基准时间开始,使用秒偏移,返回带有偏移的时间。
mylink.basetime
包含14:05:29.30
,mylink.secos
包含值2.5
,则以下两个函数等效,返回时间14:05:31.80
。 TimeOffsetByComponents("14:05:29.30", 2.5)
TimeOffsetByComponents(mylink.basetime, mylink.secos)
从给定的日期和时间返回时间戳。
mylink.mydate
包含日期2008–08–18
,而mylink.mytime
包含时间22:30:52
,则以下两个函数等效,返回时间戳2008–08–18 22:30:52
: TimestampFromDateTime("2008–08–18", "22:30:52")
TimestampFromDateTime(mylink.mydate, mylink.mytime)
返回两个时间戳字符串之间的秒数。此函数已弃用,请使用TimestampFromSecondsSince2函数。
mylink.myseconds
包含值2563
,而mylink.timestamp_base
包含时间戳2008–08–18 22:30:52
,则以下两个函数等效,返回时间戳2008–08–18 23:13:35
: TimestampFromSecondsSince("2563", "2008–08–18 22:30:52")
TimestampFromSecondsSince(mylink.myseconds, mylink.timestamp_base)
返回两个时间戳对象之间的秒数。
mylink.myseconds
包含值2563
,而mylink.timestamp_base
包含时间戳2008–08–18 22:30:52
,则以下两个函数等效,返回时间戳2008–08–18 23:13:35
:
TimestampFromSecondsSince2("2563", "2008–08–18 22:30:52")
TimestampFromSecondsSince2(mylink.myseconds, mylink.timestamp_base)
从给定的UNIX time_t
字符串值返回时间戳。
timet_string
(int32)mylink.mytimet
包含值1234567890
,则以下两个函数等效,返回时间戳2009–02–13 23:31:30
: TimestampFromTimet("1234567890")
TimestampFromTimet(mylink.mytimet)
从给定的时间和时间戳对象返回时间戳。时间对象中的值覆盖时间戳对象中的时间值,只使用时间戳中的日期部分。
mylink.mytime
包含时间12:03:22
,而mylink.mytimestamp
包含时间戳2008–08–18 22:30:52
,则以下两个函数等效,返回时间戳2008–08–18 12:03:22
: TimestampFromTime2("12:03:22", "2008–08–18 22:30:52")
TimestampFromTime2(mylink.mytime, mylink.mytimestamp)
从基准时间戳开始,使用年偏移、月偏移、日偏移、小时偏移、分钟偏移和秒偏移各自作为独立的值,返回带有偏移的时间戳。秒偏移可以包括微秒。
mylink.basetimestamp
包含2009-08-18 14:05:29
,而mylink.yearos
包含值0
,mylink.monthos
包含值2
,mylink.dayos
包含值-4
,mylink.houros
包含值2
,mylink.minos
包含值0
,mylink.secos
包含值20
,则以下两个函数等效,返回时间戳2009-10-14 16:05:49
。 TimestampOffsetByComponents("2009-08-18 14:05:29", 0, 2, -4, 2, 0, 20)
TimestampOffsetByComponents(mylink.basetimestamp, mylink.houros, mylink.minos, mylink.secos)
从基准时间戳开始,使用秒偏移,返回带有偏移的时间戳。秒偏移可以包括微秒。
mylink.basetimestamp
包含2009-08-18 14:05:29
,而mylink.secos
包含值32760
,则以下两个函数等效,返回时间戳2009-08-18 23:11:29
: TimestampOffsetBySeconds("2009-08-18 14:05:29", 32760)
TimestampOffsetBySeconds(mylink.basetimestamp, mylink.secos)
从给定的时间戳返回UNIX time_t
值。
mylink.mytimestamp
包含值2009–02–13 23:31:30
,则以下两个函数等效,返回值1234567890
: TimetFromTimestamp("2009–02–13 23:31:30")
TimetFromTimestamp(mylink.mytimestamp)
从给定的日期返回一周的第几天。origin_day可选指定被视为一周第一天的天,并默认为星期日。
mylink.mydate
包含日期2008-08-18
,则以下两个函数等效,返回值1
: WeekdayFromDate("2008-08-18")
WeekdayFromDate(mylink.mydate)
如果`mylink.mydate`包含日期`2008-08-18`,而`mylink.origin_day`包含`"saturday"`,则以下两个函数等效,返回值`2`:
WeekdayFromDate("2008-08-18", "saturday")
WeekdayFromDate(mylink.mydate, mylink.origin_day)
从给定的日期返回一年中的天数。
mylink.mydate
包含日期2008-08-18
,则以下两个函数等效,返回值231
: YeardayFromDate("2008-08-18")
YeardayFromDate(mylink.mydate)
从给定的日期返回年份。
mylink.mydate
包含日期2008-08-18
,则以下两个函数等效,返回值2008
: YearFromDate("2008-08-18")
YearFromDate(mylink.mydate)
从给定日期返回一年中的周数。
mylink.mydate
包含日期2008-08-18
,则以下两个函数等效,返回值为33
: YearweekFromDate("2008-08-18")
YearweekFromDate(mylink.mydate)