Skip to main content

日期时间函数

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

Alteryx 使用格式 YYYY-MM-DD HH:MM:SS 表示日期和时间。为了增加精度(最高精确到 18 位),请在秒数位置后添加一个句点和其他数字。例如 YYYY-MM-DD HH:MM:SS.fff。如果一个日期时间值不是这种格式,Alteryx 则将其读取为字符串。要将列转换成日期时间格式,可使用表达式编辑器中的 DateTimeParse 函数或“日期时间”工具进行。

日期格式

某些日期时间函数要求您设置日期的格式。格式字符串由说明符和分隔符组成。

日期时间函数

请参阅下面的 DateTime 函数。

DateTimeAdd

DateTimeAdd(dt,i,u):将一个具体时间间隔添加到日期时间值中。

参数

dt:日期时间数据。

i:时间正整数或负整数,用于进行加减。

u:日期时间单位,使用日期时间单位的关键字部分中列出的关键字在引号之间指定。

示例

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 号)。

DateTimeAdd("2016-03-30 01:02:03.000000", 495, "microseconds") 返回 2016-03-30 01:02:03.000495。

阅读更多

  • 表示时间段的任何小数都将被截断。例如,您不能加“1.5 小时”。但可以加“90 分钟”。

  • 添加单位不会改变比其小的单位的值。例如,添加小时不会更改分钟或秒的值。添加月不会更改日期或时间,除非生成的月份不存在该天。在这种情况下,系统将用该月的最后一天。

  • 此函数执行计算时,会假设时区不存在与夏令时和标准时间相关的时间变更。如果您的计算包括时间从夏令时更改为标准时间或反向更改的日期和时间,则可能会产生意外的结果。如果实际经过时间的精度至关重要,您应首先将数据转换为 UTC。

DateTimeDay

DateTimeDay(dt):返回日期时间值中当日的数字值。

参数

dt:日期时间数据。

示例

DateTimeDay("2017-03-24 11:43:23") 返回 24。

DateTimeDiff

DateTimeDiff(dt1,dt2,u):第一个参数 (dt1–dt 2) 减去第二个参数,并返回它们之间的整数差值。时间间隔以指定时间单位为单位返回一个数字,而不是返回字符串。

参数

dt:日期时间数据。

u:日期时间单位,使用日期时间单位的关键字部分中的关键字在引号之间指定。

示例

DateTimeDiff("2024-01-18", "2024-01-15", "days") 返回 3。

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('2017-02-28 00:59:59.28139502', '2017-02-28 00:59:59.12383125', 'msecs') 返回 157(日期时间值之间的毫秒数)。

阅读更多

  • 对于月和年的时间差,仅当结束日期与开始日期之间相距一个整月时,才会被计算成一个月(当天时间将被忽略)。

  • 天、小时、分钟和秒的结果经过精准计算,小数部分将被截断,但不是进行四舍五入。因此......

    • 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 来保留所有支持日期之间的时间间隔。

  • 此函数执行计算时,会假设时区不存在与夏令时和标准时间相关的时间变更。如果您的计算包括时间从夏令时更改为标准时间或反向更改的日期和时间,则可能会产生意外的结果。如果实际经过时间的精度至关重要,您应首先将数据转换为 UTC。

DateTimeFirstOfMonth

DateTimeFirstOfMonth():返回月份的第一天,从午夜开始。

DateTimeFormat

DateTimeFormat(dt,f,[l],[tz]):将日期时间数据从 ISO 格式转换为另一种指定格式 (f),采用指定的语言 (l) 和时区名称 (tz),以用于其他应用程序。输出为字符串数据类型。如果指定格式的精度低于传入数据,则输出将被截断,且不会进行四舍五入。例如,如果您传入的时间精确到微秒 (.012789),而格式指定时间精确到毫秒,则结果将被截断为 .012,而不是四舍五入为 .013。可选的时区参数允许您控制添加到字符串中的文本样式(例如,“EDT”)。

参数

dt:日期时间数据。

f:转换数据的格式,以格式字符串表示。请参阅下文的说明符部分。

l:这是一个可选语言参数。它默认为您选择的 Designer 语言。例如,如果将 Designer 设置为法语,则默认以 DateTimeParse(dt,f,"Français") 取读。请注意,如果省略此参数,则无论 Designer 的界面语言设置如何,该函数都会使用英语。有关接受的语言值列表,请参阅语言参数

tz:这是一个可选时区参数。请注意,数据不会转换。这只是为了控制添加到字符串中的文本样式。

  • 使用偏移格式指令 (%z) 时,时区标识符用于确定要显示的偏移量;使用时区名称格式指令 (%Z) 时,则用于获取要显示的时区名称。

  • 时区名称保留参数的样式:短格式(如 EST)、长格式(如东部标准时间)、通用格式(如 ET)或特定格式(如 EST/EDT)。

    名称会经过修改,以匹配数据对应的正确季节。例如,对于 2024-08-15,如果提供的 tz 为 EST,则会更正为 EDT。同样,对于 2024-01-15,如果提供的 tz 为 EDT,则会更正为 EST。在这两个示例中,如果提供的 tz 为通用 ET,则不会更改,以显示其为夏令时还是标准时间。

  • 如果函数调用中未提供 tz,则使用系统时区。

示例

DateTimeFormat('2008-04-22',"%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日为星期二)。

DateTimeFormat('11:59:57.890994389','%H:%M:%S.%5') 返回"11:59:57.89099"(根据指定的数字截断到 5 位精度)。

DateTimeFormat('11:59:57.99','%H:%M:%S,%3') 返回"11:59:57,990"(可以获得您所在语言环境的小数分隔符。此示例使用逗号而不是小数点)。

DateTimeFormat('2024-03-10 01:00:00', '%b %d, %y %T %Z', '', 'ET') 返回“Mar 10, 24 01:00:00 ET”。时区参数的样式为短格式和通用格式,因此结果中使用该样式。

DateTimeFormat('2024-03-10 01:00:00', '%b %d, %y %T %Z', '', 'EDT') 返回“Mar 10, 24 01:00:00 EST”。时区参数的样式为短格式和特定格式。这与数据的时间不匹配。结果会更正为特定时区的正确偏移量。

DateTimeFormat('2024-03-10 01:00:00', '%b %d, %y %T %Z', '', 'Eastern Time') 返回“Mar 10, 24 01:00:00 Eastern Time”。样式保持不变,且无需更正偏移量。

DateTimeFormat('2024-03-10 01:00:00', '%b %d, %y %T %Z', '', 'Eastern Daylight Time') 返回“Mar 10, 24 01:00:00 Eastern Standard Time”。已更正时区偏移量。

DateTimeFormat('2024-03-10 01:00:00', '%b %d, %y %T %z', '', 'ET') 返回“Mar 10, 24 01:00:00 -0400”。

DateTimeHour

DateTimeHour(dt):返回日期时间值中小时部分的值。

参数

dt:日期时间数据。

示例

DateTimeHour("2017-03-24 11:43:23") 返回 11。

DateTimeHour("2017-03-24") 返回 0(如果只有日期但没有指定时间,则默认小时为午夜时间)。

DateTimeLastOfMonth

DateTimeLastOfMonth():返回当前月份的最后一天,将时钟设置为当天结束前的一秒 (23:59:59)。

Designer 使用工作流开始运行的日期和时间。在批处理过程中,此时间用于每组新数据。这可保持在处理需要很长时间情况下时间的一致性。

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

DateTimeNow([tz]):返回当前日期和时间,包括秒。如果您提供可选的时区 (tz) 参数,则返回的时间将采用该时区。如果未提供时区,则返回的时间将使用系统时区。

参数

tz:(可选)提供返回的时间的时区。如果提供,则返回的时间将采用该时区。如果省略,则返回的时间将采用您的系统时区。

DateTimeNowPrecise

DateTimeNowPrecise(digits,[tz]):返回当前系统日期和时间,具体到秒后的小数,最多支持 18 位精度。如果您提供可选的时区 (tz) 参数,则返回的时间将采用该时区。如果未提供时区,则返回的时间将使用系统时区。

请注意,如果您请求的精度超出操作系统提供的精度,则该函数会在剩余部分填入 0,例如下面的第二个示例。

参数

digits:指定返回值的精度,介于 0 到 18 之间(包括 0 和 18)。

tz:(可选)提供返回的时间的时区。如果提供,则返回的时间将采用该时区。如果省略,则返回的时间将采用您的系统时区。

示例

DateTimeNowPrecise(3) 返回“2022-10-14 11:59:57.991”。

DateTimeNowPrecise(12) 返回 '2022-10-14 11:59:57.991238400000'。

DateTimeParse

DateTimeParse(string,f,[l],[tzName]):将指定时区 (tzName) 内指定格式 (f) 和指定语言 (l) 的日期字符串转换为格式 YYYY-MM-DD HH:MM:SS(如果适用,还可以满足可选的日期时间精度要求)。如果指定格式的精度较低,则输出会被截断。

参数

string:日期时间字符串数据。传入数据必须是字符串数据类型,并且可以是日期时间的任何格式,只要此格式与您为 f 参数指定的格式一致即可。

f:要转换的传入日期字符串数据的格式,由带引号的格式字符串表示。

时区

如果传入的格式包含 %z 或 %Z,Alteryx 即可识别输入时区。它会将日期时间结果值转换为本地时区或指定时区的对应值。如果格式或数据不包含时区信息,Alteryx 会假定输入值已为本地时区,并且不会应用任何时间偏移量。

请检查您的数据,并采取适当的步骤,以确保输出格式符合您的预期。有关时区的重要注意事项,请转至时区和夏令时/标准时间更改

l:(可选)要转换的传入日期字符串数据的语言。编辑公式时,语言参数默认为选定的 Designer 语言。如果省略或留空,则使用英语。例如,如果将 Designer 设置为法语,则默认以 DateTimeParse(string,f,"Français") 取读。有关接受的语言值,请参阅语言参数

tz:(可选)如果格式中包含 %z 或 %Z,且文本包含时区名称或偏移量,则将数据转换为相应时区。通过示例可以帮助您理解这一点。如果省略时区,则会使用系统时区进行转换。

示例

DateTimeParse("2016/28-03","%Y/%d-%m") 返回 2016-03-28。

DateTimeParse('mardi 14 juillet 2020', '%A %d %B %Y', 'Français') 返回 2020-07-14,其中传入日期字符串为“mardi 14 juillet 2020”(2020 年 7 月 14 日星期二)。

DateTimeParse('Oct 4, 22 11:59:57.99', '%b %d, %y %H:%M:%S') 返回 '2022-10-04 11:59:57'。该函数会删除尾随数字。

DateTimeParse('Oct 4, 22 11:59:57.99', '%b %d, %y %H:%M:%S.%3') 返回“2022-10-04 11:59:57.990”。该函数添加零以匹配 %3 格式。

DateTimeParse('Oct 4, 22 11:59:57.99', '%b %d, %y %H:%M:%S,%3') 返回 [Null] 和一条警告,提示期望的是“,”而不是“.”。

DateTimeParse('Mar 10, 24 01:00:00 PST', '%b %d, %y %T %Z') 如果本地时区为东部,则返回“2024-03-10 04:00:00”。

DateTimeParse('Mar 12, 24 01:00:00 PST', '%b %d, %y %T %Z') 如果本地时区为东部,由于东部时间已更改为 EDT(东部夏令时),因此返回“2024-03-12 05:00:00”。

DateTimeParse('Mar 10, 24 01:00:00', '%b %d, %y %T %Z') 如果本地时区为东部,则返回“2024-03-10 01:00:00”。尽管格式要求提供时区信息,但数据中不包含任何时区信息。如果不知道输入数据的时区,则不会进行转换。

DateTimeParse('Mar 10, 24 01:00:00 PST', '%b %d, %y %T') 返回“2024-03-11 01:00:00”。如上例所示,如果格式未要求使用时区信息,则任何可能包含时区信息的数据都将被忽略。

DateTimeQuarter

DateTimeQuarter(dt, [Q1Start]:返回日期时间 (YYYY-MM-DD) 值所在年份的季度的数值。使用可选的数字参数表示第一季度 (Q1) 的起始月份。

参数

dt:日期时间数据。

Q1Start:可选的数字参数(1-12),表示 Q1的起始月份。

示例

DateTimeQuarter("2023-01-03") 返回 1。没有错误,因为第二个参数为可选。

DateTimeQuarter("2023-05-03", 1) 返回 2。

DateTimeQuarter("2023-05-03", 7) 返回 4。可选参数表示 Q1 从七月开始。

DateTimeQuarter("2023-05-03 12:04:55", 7) 返回 4。可选参数表示 Q1 从七月开始,时间戳会被忽略。

DateTimeQuarter("2023-01-03", 13) 返回 Null。第二个参数必须是介于 1–12 之间的数值。

DateTimeQuarter("2023-01-03", 0) 返回 Null。第二个参数必须是介于 1–12 之间的数值。

DateTimeQuarter("2023-01-03", -1) 返回 Null。第二个参数必须是介于 1–12 之间的数值。

DateTimeQuarter("12:00:55") 返回 Null。

DateTimeSeconds

DateTimeSeconds(dt):返回日期时间值中的秒数部分,包括任何亚秒级精度(如果适用)。

参数

dt:日期时间数据。

示例

DateTimeSeconds('11:59:57.99') 返回 57.99。

DateTimeSeconds('11:59:57') 返回 57。

DateTimeStart

DateTimeStart():使用系统时区返回当前工作流开始运行时的日期和时间。

DateTimeToday

DateTimeToday():返回今天的日期。

预期结果:DateTimeToday 数据类型

尽管名称包含时间,DateTimeToday() 不返回时间值。而仅返回带有当前日期的日期。您可以将 DateTimeToday() 函数括在 ToDateTime()函数内以返回时间设置为当天午夜的日期时间值:

ToDateTime(DateTimeToday())

DateTimeToLocal

DateTimeToLocal(dt,[tz]):将 UTC 日期时间转换为可选的 tz 参数,否则转换为本地系统时区。DateTimeToLocal 函数现在支持 dt 字段中的日期时间精度。

注意

结果不含任何指示其时区的信息。如果需要时区信息,您需要使用 DateTimeFormat 函数或将结果转换为字符串以指示时区。如果使用 DateTimeFormat 函数,则 tz 参数应为转换过程中所用时区的名称。它可以采用不同的样式,例如 EST、东部夏令时、America/New_York 或“-0400”。有关时区的重要注意事项,请转至时区和夏令时/标准时间更改

参数

dt:日期时间数据。

tz:这是一个可选时区参数,用作转换日期时间数据。如果函数调用中未提供 (tz),则使用系统时区。

示例

DateTimeToLocal('2014-08-01 20:01:25') 转换为本地系统时区(山区时间),即 2014-08-01 14:01:25。

DateTimeToLocal('2024-08-15 09:00:00.123') 将 UTC 时间转换为系统时间,如果系统时区是 America/New_York,则返回 '2024-08-15 05:00:00.123';如果系统时区是 America/Denver,则返回 '2024-08-03:00:00.123'。

DateTimeToLocal('2024-08-15 09:00:00.123', 'EST') 将 UTC 时间转换为东部夏令时,即使指定的时间是标准时间。查找用于转换的时区时,会忽略夏令时/标准时间的设定,因此将返回“2024-08-15 05:00:00.123”。

DateTimeToUTC

DateTimeToUTC(dt,[tz]):将日期时间(在本地系统时区或提供的时区)转换为 UTC。假定输入的日期时间位于给定时区,否则位于运行工作流的系统对应的时区。DateTimeToUTC 函数现在支持 dt 字段中的日期时间精度。

注意

结果不含任何指示其使用 UTC 格式的信息。如果需要时区信息,您需要使用 DateTimeFormat 函数或将结果转换为字符串以指示时区。如果使用 DateTimeFormat 函数,则 tz 参数应为转换过程中所用时区的名称。它可以采用不同的样式,例如 UTC、GMT、Z 或“+0000”。有关时区的重要注意事项,请转至时区和夏令时/标准时间更改

参数

dt:日期时间数据。

tz:这是一个可选时区参数。如果函数调用中未给定 tz,则使用系统时区。

示例

DateTimeToUTC(DateTimeNow()) 返回工作流运行时的协调世界时 (UTC):2014-08-01 20:01:25(当地山区时间是 2014-08-01 14:01:25)。

DateTimeToUTC('2024-08-15 09:00:00.123') 将时间从系统时间转换为 UTC,如果系统时区是 America/New_York,则返回“2024-08-15 13:00:00.123”;如果系统时区是 America/Denver,则返回“2024-08-15:00:00.123”。

DateTimeTrim

DateTimeTrim(dt,t):删除日期时间中不需要的部分,并返回修改后的日期时间。

参数

dt:日期时间数据。

t: 修剪类型。选项包括:

  • 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') 返回 2016-12-07 11:59:57.990。

DateTimeTrim('2016-12-07 11:59:57.99',4) 返回 2016-12-07 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

ToDateTime(x):将字符串、数字或日期转换为日期时间。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 作为日期时间返回。

日期时间函数参考

请参阅以下说明符、分隔符、关键字和语言参数,以便在日期时间函数中使用。

说明符

说明符总是以百分比符号 (%) 开头,后跟一个区分大小写的字母或数字。数据必须至少包含两位数的年。

提示

如果您更希望查看按字母顺序排列的列表,请在下方查看。

说明符

DateTimeFormat 的输出

DateTimeParse 支持的输入

%y

年的最后两位数字 ("16")。

最多读取 4 位数字,在分隔符或字符串末尾停止,并映射到当前年份减 66 到当前年份加 33 的范围。例如,就 2016 年而言, 这个范围在 1950 到 2049 年之间。

6 位数日期限制

由于年份最多可读取 4 位数,当读取只由 2 位数字代表年且没有分隔符的格式,比方 6 位数字的日期戳(如 %y%m%d 代表类似 170522 的数据,即 May 22, 2017),仍以 4 个数字进行读取。要解决此问题,您可以:

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

  • 使用 RegEx 工具在字符串的前 2 位数字后插入空格。

%Y

四位数字的年 ("2016")。

读取两位或四位数字。两位数字映射到当前年份减 66 到当前年份加 33 的范围。例如,就 2024 年而言,这个范围在 1958 到 2057 年之间。

%b

缩写的月份名称 ("Sep")

月份名称的任何有效缩写 ("Sep", "SEPT.")。仅当给定文本不是(指定语言中的)月份名称时才返回错误。

%B

完整的月份名称 ("September")

月份名称或月份名称的任何有效缩写 ("Sep", "SEPT.")。仅当给定文本不是(指定语言中的)月份名称时,它才返回错误。

%h

缩写的月份名称。与 %b ("Sep") 相同。

月份名称的任何有效缩写 ("Sep", "SEPT.")。仅当给定文本不是月份名称时才返回错误。

%m

月份数字,01 - 12。

1 位或 2 位数字的月份,1 或 01 - 12。

%U

返回以数字表示的周,即 00 - 53,周从星期日开始。

不支持

%W

返回以数字表示的周,即 00 - 53,周从星期一开始。

不支持

年份/月份中的天

%d

月份中的天 ("01")

1 位或 2 位数字,忽略空格(“1”或“01”)。

%e

月份中的天,第一个 0 替换为空格 (" 1")。

1 位或 2 位数字,忽略空格(“1”或“01”)。

%j

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

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

星期几

%a

星期的缩写 ("Mon")

一周内任何一天的有效缩写 ("mon", "Tues.", "Thur")。只有当给定的文本不是一周内的某一天时才返回一个错误。请注意,Alteryx 不查证所指的周内的某一天是否与相应的日期相吻合。

%A

完整的星期几名称 ("Monday")

星期几名称或星期几的任何有效缩写 ("mon", "Tues.", "Thur")。只有当给定的文本不是一周内的某一天时才返回一个错误。请注意,Alteryx 不查证所指的周内的某一天是否与相应的日期相吻合。

%u

十进制形式表示的星期几,1-7,星期一为 1。

不支持

%w

数字表示的星期几,0 - 6,星期日为 0。

不支持

小时,分钟,秒

%H

以 24 小时制表示的小时,00 - 23。

小时最多为 2 位数字,0 - 23。与 %p 或 %P 不兼容。

%I(请注意这是大写字母“I”,即大写的"i")

以 12 小时制表示的小时,01 - 12。

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

%k

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

小时最多为 2 位数字。

%M

分钟,00 - 59

分钟最多为 2 位数字。

%S

秒,00 - 59

秒最多为 2 位数字。

其它

%1 - %18(范围内的数字)

亚秒级精度位数。

亚秒级精度高达 18 位。

%c

计算机区域设置的日期和时间。

不支持

%C

世纪数字 ("20")

不支持

%D

等同于 %m/%d/%y

不支持

%h

与 %b ("Sep") 相同

月份名称的任何有效缩写 ("Sep", "SEPT.")。仅当给定文本不是月份名称时才返回错误。

%l(请注意这是小写字母“l”,即小写的 L)

12 小时,第一个 0 是空格," 1" - "12"。

不支持

%p

"AM"或"PM"

不区分大小写("aM"或"Pm")。必须接在 %I 后面(请注意这是大写字母“I”,即大写的"i"。12 小时制的小时)。

%P

"am"或"pm"

不区分大小写("aM"或"Pm")。必须接在 %I 后面(请注意这是大写字母“I”,即大写的"i"。12 小时制的小时)。

%T

24 小时制中的时间。等同于 %H:%M:%S

24 小时制中的时间。等同于 %H:%M:%S

%x

计算机区域设置的日期。

不支持

%X

12 小时制时间,包含 AM 或 PM (“11:51:02 AM”)。

Hours:Minutes:Seconds [AM / PM]

%z

UTC 时差(“-600”)

支持输入。

%Z

完整时区名称 ("山区夏令时")。

支持输入。

说明符

DateTimeFormat 的输出

DateTimeParse 支持的输入

%1 - %18(范围内的数字)

亚秒级精度位数。

亚秒级精度高达 18 位。

%a

星期的缩写 ("Mon")

一周内任何一天的有效缩写 ("mon", "Tues.", "Thur")。只有当给定的文本不是一周内的某一天时才返回一个错误。请注意,Alteryx 不查证所指的周内的某一天是否与相应的日期相吻合。

%A

完整的星期几名称 ("Monday")

星期几名称或星期几的任何有效缩写 ("mon", "Tues.", "Thur")。只有当给定的文本不是一周内的某一天时才返回一个错误。请注意,Alteryx 不查证所指的周内的某一天是否与相应的日期相吻合。

%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(请注意这是大写字母“I”,即大写的"i")

以 12 小时制表示的小时,01 - 12。

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

%j

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

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

%k

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

小时最多为 2 位数字。

%l(请注意这是小写字母“l”,即小写的 L)

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

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")。

读取两位或四位数字。两位数字映射到当前年份减 66 到当前年份加 33 的范围。例如,就 2024 年而言,这个范围在 1958 到 2057 年之间。

%z

UTC 时差 ("-600")

支持输入。

%Z

完整时区名称 ("山区夏令时")。

支持输入。

分隔符

在日期时间说明符之间插入分隔符以形成格式字符串。

分隔符

DateTimeFormat 的输出

DateTimeParse 支持的输入*

/

/

/ 或 -

-

-

/ 或 -

空格

空格键

任何空格字符序列。

%n

换行

不支持

%t

Tab 键

不支持

其他

其他字符,如逗号、句点和冒号。

其他字符,如逗号、句点和冒号。

*DateTimeParse 接受向前斜杠 (/) 和连字符 (-) 的互换使用。但是,逗号、冒号和所有其他分隔符必须与传入数据完全匹配。

日期时间单位的关键字

这些关键字与 DateTimeAddDateTimeDiffDateTimeTrim 函数兼容。它们不区分大小写。每个单位接受的关键字均以逗号分隔。

在某些情况下,我们接受缩写,但最多不超过完整的关键词。在下面的列表中以 upto 指定这些缩写,范围从可接受的最短缩写到完整关键字。例如,对于 seconds(秒),我们接受 secseconds,以及中间的任何东西,如 seco。请注意,关键字为英文,而且翻译成其他语言不受支持。

您也可以使用数字值作为亚秒时间的关键字。这包括下方列表中未特别标注的单位。例如,您可以使用关键字“10”来指示 10 位精度。

  • yea upto years

  • mon upto months

  • day, days

  • hou upto hours

  • min upto minutes

  • sec upto seconds

  • ds, dsec, dsecs, deciseconds, 1.

  • cs, csec, csecs, centiseconds, 2

  • ms, msec, msecs, milliseconds, 3

  • us, usec, usecs, microseconds, 6

  • ns, nsec, nsecs, nanoseconds, 9

  • ps, psec, psecs, picoseconds, 12

  • fs, fsec, fsecs, femtoseconds, 15

  • as, asec, asecs, attoseconds, 18

有关以各种精度单位表示的日期时间字段大小的一些示例,请参阅下表:

名称

缩写

日期时间大小

示例

sec

19(默认)

2023-02-24 01:23:45

分秒 (1)

ds, dsec, dsecs

21 (19 + 1 + 1)

2023-02-24 01:23:45.1

厘秒 (2)

cs, csec, csecs

22 (19 + 1 + 2)

2023-02-24 01:23:45.12

毫秒 (3)

ms, msec, msecs

23 (19 + 1 + 3)

2023-02-24 01:23:45.123

微秒 (6)

us, usec, usecs

26 (19 + 1 + 6)

2023-02-24 01:23:45.123456

纳秒 (9)

ns, nsec, nsecs

29 (19 + 1 + 9)

2023-02-24 01:23:45.123456789

皮秒 (12)

ps, psec, psecs

32 (19 + 1 + 12)

2023-02-24 01:23:45.123456789012

飞秒 (15)

fs, fsec, fsecs

35 (19 + 1 + 15)

2023-02-24 01:23:45.123456789012345

阿秒 (18)

as, asec, asecs

38 (19 + 1 + 18)

2023-02-24 01:23:45.123456789012345678

语言参数

这些是 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(西班牙语)。

时区命名

时区命名有多种样式。名称可以是长格式 (Mountain Time)、短格式 (MT)、特定格式(MDT、MST)或通用格式 (MT)。互联网名称分配机构 (IANA) 维护着一个时区信息数据库。其名称样式为“地区/城市”(例如 America/Los Angeles、Europe/Paris)。

时间信息也可以标记为相对于协调世界时 (UTC) 的偏移量。例如,11:31-0500 表示一个比 UTC 晚 5 小时的时区(在 UTC 中,同一时刻为 16:31)。这个时间可以是中部夏令时、东部标准时间或秘鲁时间。IANA 样式是时区的规范名称。根据用户的语言区域设置,可能会接受其他名称。

Alteryx 使用一个广泛使用的库 (ICU) 来查找时区信息。如果您的工作流引用了无法找到的时区,则工作流会报告错误。

警告

请注意,短名称可能产生歧义。例如,IST 可以表示印度标准时间、以色列标准时间或爱尔兰标准时间。因此,请谨慎处理您的输入数据。

为了确保正确处理您的数据,Alteryx 建议将短时区名称替换为长时区名称或 IANA 样式名称。您可以使用查找替换工具来执行此操作。

要按名称查找时区,如果 Designer 语言设置为英语以外的语言(通过用户设置>语言和地区),Alteryx 会首先要求 ICU 使用该语言查找时区。如果使用该语言未能找到时区,Alteryx 则会要求 ICU 使用英语查找时区。在某些地区,即使当地语言有相应时区的长名称,也会使用英语缩写。

Alteryx 还会尝试从 Designer 界面语言(或函数中指定的语言)开始,使用每种支持的语言查找名称。

提示

您应该了解您的数据中所使用的时区名称,并可以考虑使用查找替换工具来确保获得正确的时区名称。

时区和夏令时/标准时间更改

对于实行夏令时和标准时间变更的时区,在试图解析夏令时与标准时间切换点附近的时间时,会遇到问题。

切换到夏令时

在切换到夏令时(夏季)的时刻前后,会有一个小时的时间无效。在美国,当本地标准时间即将到达 2024 年 3 月 10 日凌晨 2:00:00 时,时钟会向前拨快 1 小时,变为本地夏令时 2024 年 3 月 10 日凌晨 3:00:00。

因此,以东部时间为例,2024-03-10 02:30:00 这个时间并不存在。这个时间是无效的,因为不存在这样的时间。但是,Alteryx 库不会检测到此问题。如果转换 DateTimeToUTC('2024-03-10 02:30:00', 'Eastern Time'),代码将应用标准时间的偏移量(5 小时),并返回“2024-03-10 07:30:00”,且不会发出无效输入警告。

切换到标准时间

切换到标准时间时,有一小时会产生歧义。在美国,当本地夏令时即将到达 2024 年 11 月 3 日凌晨 2:00:00 时,时钟会向后拨慢 1 小时,变为本地标准时间 2024 年 11 月 3 日凌晨 1:00:00。

东部时间 2024-11-03 01:30:00 既可能是东部标准时间,也可能是东部夏令时。由于将实际处于夏令时的时间指定为 EST,或将实际处于标准时间的时间指定为 EDT 是非常常见的错误,因此各种库在查找时区信息时通常会忽略季节的设定。

因此,Alteryx 无法通过正确使用指定的季节,将东部时间中具有歧义的那个小时转换为 UTC 时间。它会应用标准时间的偏移量(5 小时),而无论指定使用 EST 还是 EDT 作为时区,即……

  • DateTimeToUTC('2024-11-03 01:30:00', 'Eastern Daylight Time') 返回 2024-11-03 06:30:00。

  • DateTimeToUTC('2024-11-03 01:30:00', 'Eastern Standard Time') 返回 2024-11-03 06:30:00。

  • DateTimeToUTC('2024-11-03 01:30:00', 'Eastern Time') 返回 2024-11-03 06:30:00。

注意事项和限制

日期支持

Alteryx Designer 无法处理 1400 年 1 月 1 日之前的日期。

Alteryx 支持 1400 年到 9999 年之间的日期。我们假定所有日期都采用公历,公历是目前全球大部分地区通用的民用日历。所有计算(加法和减法)都会忽略闰秒。