类型转换函数用于更改参数的类型。
以下函数位于表达式编辑器的“类型转换”类别中。方括号表示参数是可选的。缺省日期格式为 %yyyy-%mm-%dd。
以下示例按照 Transformer 阶段的派生字段中所示来显示这些函数。
Char(65)
DateToString(mylink.mydate)
以下示例会将 mylink.mydate 列中包含的日期输出为 dd:mm:yyyy 格式的字符串。如果 mylink.mydate 包含日期 2009 年 8 月 18 日,那么输出字符串为“18:08:2009”:DateToString(mylink.mydate, "%dd:%mm:%yyyy")
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
字面值数字 0 到 9 都有效。
DateToDecimal (mylink.basedate, "%dd%mm%yyyy")
如果 mylink.basedate 列包含日期 2012-08-18,并且目标列的长度为 10,小数位为 2,那么以下函数会将日期存储为十进制数 201208.18:DateToDecimal (mylink.basedate)
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
字面值数字 0 到 9 都有效。
DecimalToDate (mylink.basedate, "%dd%mm%yyyy")
如果 mylink.mydecdata 列包含值 -201208.18,那么以下函数将返回日期 2012-08-18:DecimalToDate (mylink.basedate)
ceil。向正无穷方向对源字段取整。例如,1.4 -> 2,-1.6 -> -1。
floor。向负无穷方向对源字段取整。例如,1.6 -> 1,-1.4 -> -2。
round_inf。通过向正无穷方向对正数值取整并向负无穷方向对负数值取整,向最接近的可表示值对源字段进行取整或截断。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。
trunc_zero。不论符号如何,废弃位于目标数据支持的最右侧小数位右侧的任何小数位。例如,如果目标数据是整数,那么截断所有小数位。如果目标数据是另一个具有更少小数位的小数,那么按照目标小数的小数位数进行取整或截断。例如,1.6 -> 1,-1.6 -> -1。
DecimalToDecimal(mylink.mydec,"ceil")
以下函数将返回十进制数 00000002.53。DecimalToDecimal(mylink.mydec,"floor")
以下函数将返回十进制数 00000002.53。DecimalToDecimal(mylink.mydec,"trunc_zero")
以下函数将返回十进制数 00000002.53。DecimalToDecimal(mylink.mydec,"round_inf")
在所有这些示例中,目标十进制的长度为 10,小数位为 2。DecimalToDFloat(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.00,那么以下函数将返回 dfloat 数 1.23440000000000000E+04。DecimalToDFloat(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回 dfloat 数 1.23441200000000010E+04。DecimalToDFloat(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回 dfloat 数 1.23441200000000010E+04。DecimalToDFloat(mylink.mydec)
如果 mylink.mydec 列包含十进制数 00012344.000,那么以下函数将返回 dfloat 数 1.23440000000000000E+04。DecimalToDFloat(mylink.mydec)
DecimalToString(mylink.mydec,"suppress_zero")
如果 mylink.mydec 列包含十进制数 00000004.00,那么以下函数将返回字符串“0000000000000000000000000004.0000000000”。DecimalToString(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.00。那么以下函数将返回字符串“12344”。DecimalToString(mylink.mydec,"suppress_zero")
如果 mylink.mydec 列包含十进制数 00012344.00,那么以下函数将返回字符串“0000000000000000000000012344.0000000000”。DecimalToString(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回字符串“0000000000000000000000012344.1200000000”。DecimalToString(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回字符串“12344.12”:DecimalToString(mylink.mydec,"suppress_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回字符串“0000000000000000000000012344.120000000”。DecimalToString(mylink.mydec)
如果 mylink.mydec 列包含十进制数 00012344.000,那么以下函数将返回字符串“0000000000000000000000012344.0000000000”。DecimalToString(mylink.mydec)
%hh(使用 24 小时制的以两位数表示的小时数)
%nn(两位数表示的分钟数)
%ss(两位数表示的秒数)
%ss.N(由两位数表示的秒数加上所允许的小数位数。 小数位数从 1 到 6,包括 1 和 6)。
字面值数字 0 到 9 都有效。
如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。
DecimalToTime(mylink.mytimedec)
如果 mylink.mytimedec 列包含十进制值 580620,那么以下函数将返回时间 20:06:58:DecimalToTime(mylink.mytimedec, "%ss%nn%hh")
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
%hh(使用 24 小时制的以两位数表示的小时数)
%nn(两位数表示的分钟数)
%ss(两位数表示的秒数)
%ss.N(由两位数表示的秒数加上所允许的小数位数。 小数位数从 1 到 6,包括 1 和 6)。
字面值数字 0 到 9 都有效。
如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。
DecimalToTimestamp(mylink.mytimestampdec)
如果 mylink.mytimestampdec 列包含十进制值 200658580818,那么以下函数将返回时间戳 1958–08–18 20:06:58:DecimalToTimestamp(mylink.mytimestampdec, "%hh%nn%ss%yy%mm%dd")
ceil。向正无穷方向对源字段取整。例如,1.4 -> 2,-1.6 -> -1。
floor。向负无穷方向对源字段取整。例如,1.6 -> 1,-1.4 -> -2。
round_inf。通过向正无穷方向对正数值取整并向负无穷方向对负数值取整,向最接近的可表示值对源字段进行取整或截断。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。
trunc_zero。不论符号如何,废弃位于目标数据支持的最右侧小数位右侧的任何小数位。例如,如果目标数据是整数,那么截断所有小数位。如果目标数据是另一个具有更少小数位的小数,那么按照目标小数的小数位数进行取整或截断。例如,1.6 -> 1,-1.6 -> -1。
DFloatToDecimal(mylink.mydec,"ceil")
如果 mylink.myfloat 列包含 dfloat 数 2.534,那么以下函数将返回十进制数 00000002.53。DFloatToDecimal(mylink.mydec,"floor")
如果 mylink.myfloat 列包含 dfloat 数 2.534,那么以下函数将返回十进制数 00000002.53。DFloatToDecimal(mylink.mydec,"trunc_zero")
如果 mylink.myfloat 列包含 dfloat 数 2.534,那么以下函数将返回十进制数 00000002.53。DFloatToDecimal(mylink.mydec,"round_inf")
DfloatToStringNoExp(mylink.myfloat,2)
IsValid("int8",mylink.mystring)
如果 mylink.mystring 列包含字符串“380096.06”,那么以下函数将返回值 0。IsValid("int8",mylink.mystring)
IsValidDate(mylink.mydate)
如果 mylink.mydate 列包含字符串“380096.06”,那么以下函数将返回值 0,这是因为转换后的字符串不是有效的 date 类型。IsValidDate(StringToDate (mylink.mydate))
IsValidDecimal(mylink.mynum)
如果 mylink.mynum 列包含字符串“wake-robin”,那么以下函数将返回值 0,这是因为转换后的字符串不是有效的 decimal 类型。IsValidDecimal(StringToDecimal (mylink.mynum))
IsValidTime(mylink.mytime)
如果 mylink.mydate 列包含字符串“IbnKayeed”,那么以下函数将返回值 0,这是因为转换后的字符串不是有效的 time 类型。IsValidTime(StringToTime (mylink.mytime))
IsValidTimestamp(mylink.mytimestamp)
如果 mylink.mytimestamp 列包含字符串“one of two”,那么以下函数将返回值 0,这是因为转换后的字符串不是有效的 timestamp 类型。IsValidTimestamp(StringToTimestamp (mylink.mytimestamp))
RawNumAt(mylink.myraw, 0)
如果 mylink.myraw 列包含从字符串“hello”派生的 raw 值,那么以下函数将返回 0,这是因为指定的索引超出了范围:RawNumAt(mylink.myraw, 12)
RawNumAt(mylink.myraw)
Seq("A")
SeqAt(mylink.mystring, 1)
StringToDate(mylink.mystring)
如果 mylink.mystring 列包含字符串“18:08:1958”,那么以下函数将返回日期 1958–08–18StringToDate(mylink.mystring,"%dd:%mm:%yyyy")
ceil。向正无穷方向对源字段取整。例如,1.4 -> 2,-1.6 -> -1。
floor。向负无穷方向对源字段取整。例如,1.6 -> 1,-1.4 -> -2。
round_inf。通过向正无穷方向对正数值取整并向负无穷方向对负数值取整,向最接近的可表示值对源字段进行取整或截断。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。
trunc_zero。不论符号如何,废弃位于目标数据支持的最右侧小数位右侧的任何小数位。例如,如果目标数据是整数,那么截断所有小数位。如果目标数据是另一个具有更少小数位的小数,那么按照目标小数的小数位数进行取整或截断。例如,1.6 -> 1,-1.6 -> -1。
StringToDecimal(mylink.mystring)
如果 mylink.mystring 列包含字符串“19982.2276”,并且目标列定义为精度为 7,小数位为 2,那么以下函数将返回十进制数 19983.23。StringToDecimal(mylink.mystring,"ceil")
StringToRaw(mylink.mystring)
StringToTime(mylink.mystring)
如果 mylink.mystring 列包含字符串“20:6:58”,那么该函数将返回时间 20:06:58。StringToTime(mylink.mystring,"%(h,s):$(n,s):$(s,s)")
StringToTimestamp(mylink.mystring)
如果 mylink.mystring 列包含字符串“8/
8/1958 20: 6:58”,那么该函数将返回时间戳 1958–08–08
20:06:58。StringToTimestamp(mylink.mystring, "%(d,s)/%(m,s)/%yyyy%(h,s):$(n,s):$(s,s)")
StringToUstring(mylink.mystring)
TimestampToDate(mylink.mytimestamp)
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
%hh(使用 24 小时制的以两位数表示的小时数)
%nn(两位数表示的分钟数)
%ss(两位数表示的秒数)
%ss.N(由两位数表示的秒数加上所允许的小数位数。 小数位数从 1 到 6,包括 1 和 6)。
字面值数字 0 到 9 都有效。
如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。
TimestampToDecimal(mylink.mytimestamp)
如果 mylink.mytimestamp 列包含时间戳 1958–08–18
20:06:58,那么以下函数将返回十进制值 200658580818:TimestampToDecimal(mylink.mytimestamp, "%hh%nn%ss%yy%mm%dd")
TimestampToString(mylink.mytimestamp)
如果 mylink.mytimestamp 列包含时间戳 1958–08–1820:06:58,那么该函数将返回字符串“18/08/1958
20:06:58”:TimestampToString(mylink.mytimestamp, "%dd/%mm/%yyyy %hh:$nn:$ss")
TimestampToTime(mylink.mytimestamp)
TimeToString(mylink.mytime)
如果 mylink.mytime 列包含时间 20:06:58,那么以下函数将返回字符串“58:06:20”:TimeToString(mylink.mytime, "%ss:$nn:$hh")
%hh(使用 24 小时制的以两位数表示的小时数)
%nn(两位数表示的分钟数)
%ss(两位数表示的秒数)
%ss.N(由两位数表示的秒数加上所允许的小数位数。 小数位数从 1 到 6,包括 1 和 6)。
字面值数字 0 到 9 都有效。
如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。
TimeToDecimal(mylink.mytime)
如果 mylink.mytime 列包含时间 20:06:58,那么以下函数将返回十进制值 580620:TimeToDecimal(mylink.mytime, "%ss%nn%hh")
UstringToString(mylink.myustring)