Skip to main content

工作流日期时间函数

日期时间函数对日期和时间值执行操作或计算。使用日期时间函数可增加或减去时间间隔、查找当前日期、查找月的第一天或最后一天、提取日期时间值的某个部分或将值转换为其他格式。

日期支持

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 不兼容。

%I

(大写"eye")

12 小时制的小时,01 - 12。

小时最多为 2 位数字,1 - 12。必须后跟 %p 或 %P。

%j

一年中的第几天,001 - 365(闰年为 366)

一年中的 3 位数字的日期,001 - 365(闰年为 366)

%k

24 小时,第一个 0 是空格,“0”-“23”。

小时最多为 2 位数字。

%l

(小写"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 个数字进行读取。要解决此问题,您可以:

  • 根据日期范围,将年改成 4 位数字(例如,2017 而不是 17)。

  • 使用正则表达式工具在字符串的前 2 位数字后插入空格。

%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 作为日期时间返回。