工作流日期时间函数
日期时间函数对日期和时间值执行操作或计算。使用日期时间函数可增加或减去时间间隔、查找当前日期、查找月的第一天或最后一天、提取日期时间值的某个部分或将值转换为其他格式。
日期支持
Live Query 无法处理早于 1400 年 1 月 1 日的日期。
Live Query 使用 ISO 格式 yyyy-mm-dd HH:MM:SS 表示日期和时间。如果日期时间值不符合此格式,Live Query 则将其读取为字符串。如需将列转换为日期时间格式以便使用和处理,请在表达式编辑器中使用 DateTimeParse 函数或使用日期时间工具。
某些日期时间函数要求您设置日期的格式。格式字符串由说明符和分隔符组成。
说明符
说明符总是以百分号 (%) 开头,后跟一个区分大小写的字母。数据必须至少包含两位数的年。
说明符 | DateTimeFormat 的输出 | DateTimeParse 支持的输入 |
|---|---|---|
%a | 星期几的缩写 ("Mon") | 一周内任何一天的有效缩写 ("mon", "Tues.", "Thur")。只有当给定的文本不是一周内的某一天时才返回一个错误。请注意,Live Query 不会检查指定的星期名称是否对特定日期有效。 |
%A | 完整的星期几名称 ("Monday") | 星期几名称或星期几的任何有效缩写 ("mon", "Tues.", "Thur")。只有当给定的文本不是一周内的某一天时才返回一个错误。请注意,Live Query 不会检查指定的星期名称是否对特定日期有效。 |
%b | 缩写的月份名称 ("Sep") | 月份名称的任何有效缩写 ("Sep", "SEPT.")。仅当给定文本不是月份名称时才返回错误。 |
%B | 完整的月份名称 ("September") | 月份名称或月份名称的任何有效缩写 ("Sep", "SEPT.")。仅当给定文本不是月份名称时才返回错误。 |
%c | 计算机区域设置的日期和时间。 | 不支持 |
%C | 世纪数字 ("20") | 不支持 |
%d | 月份中的天 ("01") | 1 位或 2 位数字,忽略空格(“1”或“01”)。 |
%D | 等同于 %m/%d/%y | 不支持 |
%e | 月份中的天,第一个 0 替换为空格 (" 1")。 | 1 位或 2 位数字,忽略空格(“1”或“01”)。 |
%h | 与 %b ("Sep") 相同 | 月份名称的任何有效缩写 ("Sep", "SEPT.")。仅当给定文本不是月份名称时才返回错误。 |
%H | 以 24 小时制表示的小时,00 - 23。 | 小时最多为 2 位数字,0 - 23。与 %p 或 %P 不兼容。 |
(大写"eye") | 12 小时制的小时,01 - 12。 | 小时最多为 2 位数字,1 - 12。必须后跟 %p 或 %P。 |
%j | 一年中的第几天,001 - 365(闰年为 366) | 一年中的 3 位数字的日期,001 - 365(闰年为 366) |
%k | 24 小时,第一个 0 是空格,“0”-“23”。 | 小时最多为 2 位数字。 |
(小写"ell") | 12 小时,第一个 0 是空格," 1" - "12"。 | 不支持 |
%M | 分钟,00 - 59 | 分钟最多为 2 位数字。 |
%m | 月份数字,01 - 12。 | 1 位或 2 位数字的月份,1 或 01 - 12。 |
%p | "AM"或"PM" | 不区分大小写("aM"或"Pm")。必须接在 %I 后面(请注意这是大写字母“I”,即大写的"i"。12 小时制的小时)。 |
%P | "am"或"pm" | 不区分大小写("aM"或"Pm")。必须接在 %I 后面(请注意这是大写字母“I”,即大写的"i"。12 小时制的小时)。 |
%S | 秒,00 - 59 | 秒最多为 2 位数字。 |
%T | 24 小时制中的时间。等同于 %H:%M:%S | 不支持 |
%u | 十进制形式表示的星期几,1-7,星期一为 1。 | 不支持 |
%U | 返回以数字表示的周,即 00 - 53,周从星期日开始。 | 不支持 |
%w | 数字表示的星期几,0 - 6,星期日为 0。 | 不支持 |
%W | 返回以数字表示的周,即 00 - 53,周从星期一开始。 | 不支持 |
%x | 计算机区域设置的日期。 | 不支持 |
%X | 12 小时制时间,包含 AM 或 PM (“11:51:02 AM”)。 | Hours:Minutes:Seconds [AM / PM] |
%y | 年的最后两位数字 ("16")。 | 最多读取 4 位数字,在分隔符或字符串末尾停止,并映射到当前年份减 66 到当前年份加 33 的范围。例如,就 2016 年而言,这个范围在 1950 年到 2049 年之间。 6 位数日期限制 由于年份最多可读取 4 位数,当读取只由 2 位数字代表年且没有分隔符的格式,比方 6 位数字的日期戳(如 %y%m%d 代表类似 170522 的数据,即 May 22, 2017),仍以 4 个数字进行读取。要解决此问题,您可以:
|
%Y | 四位数字的年 ("2016")。 | 读取 2 位或 4 位数字。2 位数字映射到当前年份减 66 到当前年份加 33 的范围。例如,就 2016 年而言,这个范围在 1950 年到 2049 年之间。 |
%z | UTC 时差 ("-600")。 | 不支持 |
%Z | 完整时区名称 ("Mountain Daylight Time"(山区夏令时))。 | 不支持 |
分隔符
在日期时间说明符之间插入分隔符以形成格式字符串。
分隔符 | DateTimeFormat 的输出 | DateTimeParse 支持的输入* |
|---|---|---|
/ | / | / 或 - |
- | - | / 或 - |
空格 | 空格 | 任何空格字符序列。 |
%n | 换行 | 不支持 |
%t | 制表符 | 不支持 |
其他 | 其他字符,如逗号、句点和冒号。 | 其他字符,如逗号、句点和冒号。 |
*DateTimeParse 允许正斜杠 ( / ) 和连字符 ( - ) 互换使用。但是,逗号、冒号和所有其他分隔符必须与传入数据完全匹配。
语言参数
这些是 DateTimeFormat 和 DateTimeParse 函数支持的“l”(语言)参数的兼容值。
英语名称 | 母语名称 | 语言代码 |
|---|---|---|
English | English | en |
Italian | Italiano | it |
French | Français | fr |
German | Deutsch | de |
Japanese | 日本語 | ja |
Spanish | Español | es |
Portuguese | Português | pt |
Chinese | 简体中文 | zh |
除了上述值之外,亦接受长度至少为 2 个字符且以上述任意字符开头的值。例如,eng、engl、engli 等表示 English(英语),或者 esp、espa、sp、spa、span 等表示 Spanish/Español(西班牙语)。
DateTimeAdd
DateTimeAdd(dt,i,u):将一个具体时间间隔添加到日期时间值中。
参数
dt:日期时间数据,由所选列或带引号的指定日期时间值表示。
i:用于添加或减去的时间整数(可为正或负)。
u:日期时间单位,用引号括起来:years、months、days、hours、minutes 或 seconds。
示例
DateTimeAdd(DateTimeToday(), -1, "days") 返回昨天的日期。
DateTimeAdd(DateTimeFirstOfMonth(), 1, "months") 返回下个月的第一天。
DateTimeAdd("2016-01-30", 1, "month") 返回 2016-02-29(因为 2 月没有 30 号,但该年 2 月份的最后一天是 29 号)。
DateTimeAdd("2016-03-30", -1, "month") 返回 2016-02-29(因为 2 月没有 30 号,但该年 2 月份的最后一天是 29 号)。
阅读更多
表示时间段的任何小数都将被截断。例如,您不能添加“1.5 小时”,而应添加“90 分钟”。
添加较大的单位不会改变较小单位的值。例如,添加小时不会更改分钟或秒的值。添加月不会更改日或时间的值,除非生成的月不存在该天。在这种情况下,系统会将日期调整为该月的最后一天。
DateTimeDay
DateTimeDay(dt):返回日期时间值中当日的数字值。
参数
dt:日期时间数据,由所选列或带引号的指定日期时间值表示。
示例
DateTimeDay("2017-03-24 11:43:23")返回 24。
DateTimeDiff
DateTimeDiff(dt1,dt2,u):第一个参数减去第二个参数,并返回它们之间的整数差值。时间间隔以指定时间单位为单位返回一个数字,而不是返回字符串。
参数
dt:日期时间数据,由所选列或带引号的指定日期时间值表示。
u:日期时间单位,用引号括起来:years、months、days、hours、minutes 或 seconds。
示例
DateTimeDiff("2016-02-15 00:00:00", "2016-01-15 00:00:01", "Months")返回 1(因为开始日期和结束日期是当月的同一天)。
DateTimeDiff("2012-02-29","2011-03-01","years")返回 0(尽管 2011-03-01 经过 365 天后是 2012-02-29,但 2 月 29 日在 3 月 1 日之前,因此还不够“一年”)。
DateTimeDiff("2016-02-14", "2016-01-15", "Months")返回 0(因为 2 月的天数少于 1 月的天数)。
DateTimeDiff("2016-02-14 23:59:59", "2016-01-15 00:00:00", "Months")返回 0(即使只差一秒钟的时间就能达到要求的日期)。
DateTimeDiff('2017-02-28', '2016-02-29', 'Months')返回 11(即使 28 号是 2017 年 2 月份的最后一天,但 28 天仍少于 29 天)。
阅读更多
对于月和年的时间差,仅当结束日期与开始日期之间相距一个整月时,才会被计算成一个月(当天时间将被忽略)。
天、小时、分钟和秒的结果经过精准计算,小数部分将被截断,但不是进行四舍五入。因此...
DateTimeDiff(‘2016-01-01 00:59:59’, ‘2016-01-01 00:00:00’, ‘Hours’)的结果为 0。DateTimeDiff(‘2016-01-01 23:59:59’, ‘2016-01-01 00:00:00’, ‘Days’)的结果为 0。精度名称可以缩短为前三个字符(如 'sec' 和 'min');不区分大小写。
以秒为单位存储时间差时要格外注意。以秒为单位时,Int32 只能支持长达 68 年的时间差,以分钟为单位则可支持长达 4082 年的时间差。您可以使用 Double 或 Int64 来保留所有支持日期之间的时间间隔。
DateTimeFirstOfMonth
DateTimeFirstOfMonth():返回月份的第一天,从午夜开始。
DateTimeFormat
DateTimeFormat(dt,f,l):以指定语言 (l),将日期时间数据从 ISO 格式转换为其他指定格式 (f),以用于其他应用。输出为字符串数据类型。
注意
此函数不适用于 Live Query for Databricks。
参数
dt:日期时间数据,由所选列或带引号的指定日期时间值表示。
f:转换数据的格式,以格式字符串表示。
l:可选语言参数。语言参数默认为选定的 Designer Cloud 语言。例如,如果语言设置为法语,该函数会默认将 DateTimeParse(dt,f,"Français") 读取为法语格式。
示例
DateTimeFormat([DateTime_Out],"%d-%m-%Y")返回 22-04-2008(日期值为 April 22, 2008,ISO 格式为 2008-04-22)。
DateTimeFormat([DateTime_Out],"%A","Spanish")返回 "martes" ( ISO日期为2020-07-14,7月14日为星期二)。
DateTimeHour
DateTimeHour(dt):返回日期时间值中小时部分的值。
参数
dt:日期时间数据,由所选列或带引号的指定日期时间值表示。
示例
DateTimeHour("2017-03-24 11:43:23")返回 11。
DateTimeHour("2017-03-24")返回 0(如果只有日期但没有指定时间,则默认小时为午夜时间)。
DateTimeLastOfMonth
DateTimeLastOfMonth():返回当前月份的最后一天,将时钟设置为当天结束前的一秒 (23:59:59)。
Live Query 使用公式首次被解析时的日期和时间。在批处理过程中,此时间用于每组新数据。这可保持在处理需要很长时间情况下时间的一致性。
DateTimeMinutes
DateTimeMinutes(dt):返回日期时间值中分钟部分的值。
参数
dt: 日期时间数据,由所选列或带引号的日期时间值表示。
示例
DateTimeMinutes("2017-03-24 11:43:23")返回 43。
DateTimeMonth
DateTimeMonth(dt):返回日期时间值中月份的数字值。
参数
dt:日期时间数据,由所选列或带引号的指定日期时间值表示。
示例
DateTimeMonth("2017-03-24 11:43:23")返回 3。
DateTimeMonth("11:43:23")返回 [Null],因为传入数据无效。
当前日期时间
DateTimeNow():返回当前日期和时间。
DateTimeParse
DateTimeParse(dt, f):将指定格式 (f) 和指定语言 (l) 的日期字符串转换为标准 ISO 格式(yyyy-mm-dd HH:MM:SS,如果适用,还可以满足可选的日期时间精度要求)。如果指定格式的精度较低,则输出会被截断。
注意
此函数不适用于 Live Query for Databricks。
参数
dt:日期时间字符串数据,由所选字段或带引号的日期时间字符串表示。传入数据必须是字符串数据类型,并且可以是日期时间的任何格式,只要此格式与您为 f 参数指定的格式一致即可。f:要转换的传入日期字符串数据的格式,由带引号的格式字符串表示。
示例
DateTimeParse("2016/28-03","%Y/%d-%m")返回 2016-03-28。DateTimeParse('Oct 4, 22 11:59:57.99', '%b %d, %y %H:%M:%S')返回 '2022-10-04 11:59:57'。该函数会删除尾随数字。
DateTimeSeconds
DateTimeSeconds(dt):返回日期时间值中秒部分的值。
参数
dt:日期时间数据,由所选列或带引号的指定日期时间值表示。
DateTimeToday
DateTimeToday():返回今天的日期。
预期结果:DateTimeToday 数据类型
尽管名称包含时间,DateTimeToday() 不返回时间值。而仅返回带有当前日期的日期。您可以将 DateTimeToday() 函数括在 ToDateTime() 函数内以返回时间设置为当天午夜的日期时间值:
ToDateTime(DateTimeToday())
DateTimeTrim
DateTimeTrim(dt, f):删除日期时间值中不需要的部分,并返回修改后的日期时间值。
注意
此函数不适用于 Live Query for Databricks。
参数
dt:日期时间数据,由所选列或带引号的指定日期时间值表示。f:修剪类型。选项包括:firstofmonth:修剪至当月的第一天(这与 month 选项相同)。
lastofmonth:将日期延长至当月的最后一天午夜前一秒。
year:修剪至 1 月 1 日午夜。
month:修剪至当月第一天午夜。
day:修剪至当天(即午夜)。这将日期时间转换成时间为零的一天(不是日期)。
hour:修剪至小时。
minute:修剪至分钟。
seconds:使用“日期时间单位关键字”部分中的关键字,将值修剪到秒及秒的小数部分。
修剪日期时间不会对返回值进行四舍五入。例如,将时间 15:59:59 修剪至小时级别,结果为 15:00:00,而不是 16:00:00。
示例
DateTimeTrim("2016-12-07 16:03:00","year")返回 2016-01-01 00:00:00。DateTimeTrim('2016-12-07 11:59:57.99','msec')返回 11:59:57.990。DateTimeTrim('2016-12-07 11:59:57.99',4)返回 11:59:57.9900。DateTimeTrim('2016-12-07 11:59:57.123456789','milliseconds')返回 11:59:57.123。
DateTimeYear
DateTimeYear(dt):返回日期时间值中年份的数字值。
参数
dt:日期时间数据,由所选列或带引号的指定日期时间值表示。
示例
DateTimeYear("2017-03-24 11:43:23")返回 2017。
ToDate
ToDate(x):将字符串、数字或日期时间转换为日期。
传入字符串的格式应为 YYYY-MM-DD。例如,2020-10-31。
传入数字的格式应为 Excel 日期格式,其中数字表示自 01-01-1900 以来的天数。例如,7000 对应于 03-01-1919。
传入日期时间的格式应为 YYYY-MM-DD hh:mm:ss。例如,2020-10-31 12:00:00。
示例
ToDate(2020-10-31) 将 2020-10-31 作为日期返回。
ToDate(7000) 将 1919-03-01 作为日期返回。
ToDate(2020-10-31 12:00:00) 将 2020-10-31 作为日期返回。
ToDateTime
DateTimeTrim(ToDateTime(x), t):将字符串、数字或日期值转换为日期时间。ToDateTime 函数不支持大于秒的精度。将 Excel 值限制为以秒表示(5 位,最多 99999)。
传入字符串的格式应为 YYYY-MM-DD hh:mm:ss。例如,2020-10-31 12:00:00。
传入数字的格式应为 Excel 日期时间格式,其中数字表示自 01-01-1900 以来的天数。例如,7000.354167 对应于 03-01-1919 上午 8:30。
示例
ToDateTime('2020-10-31')将 2020-10-31 00:00:00 作为日期时间返回。ToDateTime(7000.354167)将 1919-03-01 08:30:00 作为日期时间返回。ToDateTime('2020-10-31 12:00:00')将 2020-10-31 12:00:00 作为日期时间返回。