本部分提供有关如何使用模型字母字符串指定 dateTime 格式的信息。
当您将日期或时间转换为字符串时,可以应用格式模型来指导转换。这会应用于您将日期或时间格式化为字符串或将字符串解析为日期或时间的时候。
在格式化时(例如,日期时间转换为字符串),用等价值的源来替换模型或标记集。图 1 说明这是怎样应用的。
解析字符串后(例如,将其转换为日期时间),模型或标记的组用来确定哪部分字符串代表哪部分日期时间。图 2 说明这是怎样应用的。
表达式模型由以下定义:
.--------------.
| .- -. |
V V | |
>------+-symbol-+->
'-string-'
下表列出了可用来在模型中格式化或解析成相关日期时间的合法字符。
符号 | 含义 | 表示 | 示例 |
---|---|---|---|
a | 上午或下午标记 | 文本 | 输入 am、AM、pm、PM。输出 AM 或 PM |
d | 一月中的天数(1 - 31) | 数字 | 1、20 |
dd | 一月中的天数(01 - 31) | 数字 | 01、31 |
D | 一年中的天数(1 - 366) | 数字 | 3、80、100 |
DD | 一年中的天数(01 - 366) | 数字 | 03、80、366 |
DDD | 一年中的天数(001 - 366) | 数字 | 003 |
e | 一周中的天数(1 - 7) | 数字 | 26 |
EEE | 一周中的日期 | 文本 | Tue |
EEEE | 一周中的日期 | 文本 | 星期二 |
F | 一月中某一周内的日期(1 - 5) | 数字 | 2(7 月的第二个星期三)3 |
G | 时代 | 文本 | BC 或 AD |
h | 按上午或下午表示的小时(1 - 12) | 数字 | 6 |
hh | 按上午或下午表示的小时(01 - 12) | 数字 | 06 |
H | 24 小时格式的时间(0 - 23) | 数字 | 77 |
HH | 24 小时格式的时间(00 - 23) | 数字 | 077 |
I | ISO8601 日期/时间(最多 yyyy-MM-dd'T'HH:mm:ss. SSSZZZ) | 文本 | 2004-10-07T12:06:56.568+01:00 5 |
IU | ISO8601 日期/时间(同上,但是如果时区为 +00:00 则 ZZZ 输出为“Z) | 文本 | 2004-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z 5 |
k | 每天 24 小时格式的时间(1 - 24) | 数字 | 87 |
k | 每天 24 小时格式的时间(01 - 24) | 数字 | 087 |
K | 按上午或下午表示的小时(0 - 11) | 数字 | 9 |
KK | 按上午或下午表示的小时(00 - 11) | 数字 | 09 |
m | 分 | 数字 | 4 |
mm | 分 | 数字 | 04 |
M | 月(数值) | 数字 | 5、12 |
MM | 月(数值) | 数字 | 05、12 |
MMM | 月(字母) | 文本 | Jan、Feb |
MMMM | 月(字母) | 文本 | 1 月、2 月 |
s | 秒 | 数字 | 5 |
ss | 秒 | 数字 | 05 |
S | 十分之一秒 | 数字 | 78 |
SS | 百分之一秒 | 数字 | 708 |
SSS | 毫秒 | 数字 | 7008 |
SSSS | 1/10,000 th 秒 | 数字 | 70008 |
SSSSS | 1/100,000 th 秒 | 数字 | 700008 |
SSSSSS | 1/1,000,000 th 秒 | 数字 | 7000008 |
T | ISO8601 时间(最多 HH:mm:ss.SSSZZZ) | 文本 | 12:06:56.568+01:005 |
TU | ISO8601 时间(同上,但是 +00:00 时区用“Z”替换) | 文本 | 12:06:56.568+01:00, 15:42:12.000Z5 |
w | 一年中的周数 | 数字 | 7、532 |
ww | 一年中的周数 | 数字 | 07、532 |
W | 一月中的周数 | 数字 | 24 |
yy | 年 | 数字 | 961 |
yyyy | 年 | 数字 | 19961 |
YY | 年:仅与年中的周结合使用 | 数字 | 962 |
YYYY | 年:仅与年中的周结合使用 | 数字 | 19962 |
zzz | 时区(time zone (简称) | 文本 | gmt |
zzzz | 时区(全称) | 文本 | 格林威治标准时间 |
Z | 时区(+/-n) | 文本 | +3 |
ZZ | 时区(+/-nn) | 文本 | +03 |
ZZZ | 时区(+/-nn:nn) | 文本 | +03:00 |
ZZZU | 时区(如同 ZZZ,“+00:00”由“Z”替换) | 文本 | +03:00、Z |
ZZZZ | 时区(GMT+/-nn:nn) | 文本 | GMT+03:00 |
ZZZZZ | 时区(如同 ZZZ,但是无冒号)(+/-nnnn) | 文本 | +0300 |
' | 文本的转义 | “用户文本” | |
'' | 转义文本中的(两个单引号)单引号 | 'o''clock' |
dateTime 对象的表示取决于指定的符号,如下所示:
如果您使用 y 符号,则没有为年终的日期完成调整并可能发生不可预测结果。例如,如果将字符串 2002 01 Monday 格式化:
Y 仅应该和 w 一起使用。如果您指定了不带 w 的 Y,则忽略年。例如,如果您指定 YYYY-MM-dd 来格式化 1996-03-01,则其结果为 2005-03-01,因为忽略了年的输入而且假设了当前的年。
如果您的日期时间值适应 ISO8601:2000 “日期和时间表示”标准,您应该考虑使用格式化标记 I 和 T 是否可能。这些与 ISO8601 标准的子集匹配,特定地:
这些符号只能独立使用。
输出时,将根据逻辑数据类型应用以下格式:
逻辑 MRM 数据类型 | 逻辑 ESQL 数据类型 | 输出格式 |
---|---|---|
xsd:dateTime | TIMESTAMP 或 GMTTIMESTAMP | yyyy-MM-dd'T'HH:mm:ss.SSSZZZ |
xsd:date | DATE | yyyy-MM-dd |
xsd:gYear | INTERVAL | yyyy |
xsd:gYearMonth | INTERVAL | yyyy-MM |
xsd:gMonth | INTERVAL | --MM |
xsd:gmonthDay | INTERVAL | --MM-dd |
xsd:gDay | INTERVAL | ---dd |
xsd:time | TIME / GMTTIME | 'T'HH:mm:ss.SSSZZZ |