CSV 和 JSON 数据源使用模式字符串对日期/时间内容进行分析和格式设置。
与
STRING
和
DATE
或
TIMESTAMP
之间相互转换相关的 Datetime 函数。
unix_timestamp
date_format
to_unix_timestamp
from_unixtime
to_date
to_timestamp
from_utc_timestamp
to_utc_timestamp
Azure Databricks 使用下表中的模式字母进行日期和时间戳的分析和格式设置:
模式字母的计数决定了格式。
文本:文本样式根据使用的模式字母数确定。 如果少于 4 个模式字母,则将使用短文本格式,通常为缩写,例如星期几,Monday 可能输出为“Mon”。 如果刚好有 4 个模式字母,则将使用全文本格式,通常为完整描述,例如星期几,Monday 可能输出为“Monday”。 5 个或更多个字母将会失败。
数字 (n):此处的 n 表示这种类型的日期/时间模式可以使用的最大字母数。 如果字母数为 1,则输出值时使用最小位数且不填充。 除此之外,数字个数用作输出字段的宽度,并根据需要使用零值填充。
数字/文本:如果模式字母数为 3 或更大,请使用上述文本规则。 否则使用上述数字规则。
小数:使用一个或多个(最多 9 个)连续
'S'
字符(例如
SSSSSS
)分析并对秒的小数部分进行格式设置。
对于分析,可接受的小数长度可以为 [1,即连续的“S”的数目]。
对于格式设置,小数长度将填充为带零的连续“S”的数目。
Azure Databricks 支持微秒精度的日期/时间,其最多可有 6 位有效数字,但可以解析纳米秒,此时会截断超出位数。
年份:字母数决定了使用填充的最小字段宽度。 如果字母数为 2,则使用减少的两位数字格式。 对于输出,这会输出最右侧的两个数字。 对于分析,这将使用基值 2000 进行分析,得到 2000 到 2099 范围内(含 2000 和 2099)的年份。 如果字母数小于 4(但不是 2),则符号仅输出为负数。 否则,如果在“G”不存在时超出填充宽度,则会输出符号。 7 个或更多个字母将会失败。
月份:它遵循数字/文本的规则。 文本形式取决于字母 -
'M'
表示“标准”形式,
'L'
表示“独立”形式。 这两种形式仅在某些语言中是不同的。 例如,在俄语中,“Июль”是七月的独立形式,而“Июля”是标准形式。 下面是所有受支持的模式字母的示例:
'M'
或
'L'
:一年中的月份数从 1 开始。
'M'
和
'L'
没有任何区别。 1 到 9 的月份输出时没有填充。
> SELECT date_format(date '1970-01-01', 'M');
> SELECT date_format(date '1970-12-01', 'L');
'MM' 或 'LL':一年中的月份数从 1 开始。 将为月份 1-9 添加零填充。
> SELECT date_format(date '1970-1-01', 'LL');
> SELECT date_format(date '1970-09-01', 'MM');
'MMM':标准形式的短文本表示形式。 月份模式应该是日期模式的一部分,而不只是一个独立的月份,但区域设置除外,在区域设置中,标准形式和独立形式之间没有区别(如英语)。
> SELECT date_format(date '1970-01-01', 'd MMM');
1 Jan
-- Passing a format pattern to to_csv()
> SELECT to_csv(named_struct('date', date '1970-01-01'), map('dateFormat', 'dd MMM', 'locale', 'RU'));
01 янв.
'MMMM':标准形式的完整文本月份表示形式。 它用于将月份分析/格式设置为日期/时间戳的一部分。
> SELECT date_format(date '1970-01-01', 'd MMMM');
1 January
-- Passing a format pttern to to_csv()
> SELECT to_csv(named_struct('date', date '1970-01-01'), map('dateFormat', 'd MMMM', 'locale', 'RU'));
1 января
区域 ID(V):这将输出显示时区 ID。 模式字母数必须为 2。
区域名称(z):这将输出时区 ID 的显示文本名称。 如果字母计为 1、2 或 3,则输出短名称。 如果字母计为 4,则输出全名。 5 个或更多个字母将失败。
偏移 X 和 x:这会根据模式字母的数量设置偏移的格式。 1 个字母仅输出小时,如“+01”,除非分钟不为零,在这种情况下,也会输出分钟,如“+0130”。 2 个字母将输出小时和分钟,不带冒号,如“+0130”。 3 个字母将输出小时和分钟,带冒号,如“+01:30”。 4 个字母将输出小时、分钟以及可选的秒,不带冒号,如“+013015”。 5 个字母将输出小时、分钟以及可选的秒,带冒号,如“+01:30:15”。 6 个或更多个字母将会失败。 当要输出的偏移量为零时,模式字母“X”(大写)将输出“Z”,而模式字母“x”(小写)将输出“+00”、“+0000”或“+00:00”。
偏移 O:这会根据模式字母的数量设置本地化偏移的格式。 1 个字母将输出本地化偏移的短格式,即本地化偏移文本(如“GMT”),包含没有前导零的小时、可选的 2 位数分钟和秒(如果不为零),带冒号,如“GMT+8”。 4 个字母将输出完整格式,即本地化偏移文本,如“GMT”,其中包含 2 位数的小时和分钟字段,可选的秒字段(如果不为零),带冒号,如“GMT+08:00”。 任何其他字母数都将失败。
偏移 Z:这会根据模式字母的数量设置偏移的格式。 1、2 或 3 个字母将输出小时和分钟,不带冒号,如“+0130”。 偏移量为零时,输出为“+0000”。 4 个字母将输出本地化偏移,等效于 4 个字母的Offset-O。 如果偏移量为零,则输出为相应的本地化偏移文本。 5 个字母将输出小时、分钟和可选的秒(如果不为零),带冒号。 如果偏移量为零,则输出“Z”。 6 个或更多个字母将会失败。
可选部分的开始和结束:使用 [] 定义可选部分,可能是嵌套的。
在设置格式的过程中,即使所有有效数据都处于可选部分,也会输出。
在分析过程中,已分析字符串中可能会缺少整个部分。
可选部分以 [ 开头,并使用 ] 结尾(或在模式末尾)。
符号“E”、“F”、“q”和“Q”只能用于日期/时间格式设置,例如 date_format。 它们不能用于日期时间分析,例如 to_timestamp。
date_format 函数
from_unixtime 函数
from_utc_timestamp 函数
to_date 函数
to_timestamp 函数
to_utc_timestamp 函数
to_unix_timestamp 函数
unix_timestamp 函数