用于创建特定输出时间戳的模板字符串 - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

用于创建特定输出时间戳的模板字符串

模板 输入字符串 输出TIMESTA 注意
'yyyy-MM-dd hh:mm:ss' '2009-09-16 03:15:24' '2009-09-16 03:15:24'
'yyyy-mm' '2011-02-08 07:23:19' '2011-01-01 00:02:00'

上面的模板仅指定了第一年和第二分钟,因此输入字符串 (“02”) 中的第二个元素用作分钟。默认值用于月和日 (“01”) 以及小时和秒 (“00”)。

'MMM dd, yyyy' 'March 7, 2010' '2010-03-07 00:00:00'

嗯,上面模板中的 “March” 匹配;模板的 “逗号空格” 与输入字符串匹配。

如果模板缺少逗号,则输入字符串也必须缺少逗号,否则没有输出;

如果输入字符串缺少逗号,则模板也必须缺少逗号。

'MMM dd,' 'March 7, 2010' '1970-03-07 00:00:00'

请注意,上面的模板不使用年份说明符,导致输出 TIMESTAMP 使用该纪元中最早的年份,即 1970 年。

'MMM dd,y' 'March 7, 2010' '2010-03-07 00:00:00'

使用上面的模板,如果输入字符串是 “3月7日10日”,则输出时间戳将为 “0010-03-07 00:00:00”。

'M-d' '2-8' '1970-02-08 00:00:00'

如上所述,模板中缺少 yyyy 说明符,则使用这个时代(1970 年)的最早年份。

输入字符串 '2—8−2011' 会得到相同的结果;使用 '2011—2−8' 不会给出任何结果,因为 2011 年不是有效的月份。

'MM-dd-yyyy' '06-23-2011 10:11:12' '2011-06-23 00:00:00'

如果模板和输入在相同位置使用破折号作为分隔符(如上所述)就可以了。由于模板省略了小时、分钟和秒,因此在输出 TIMESTAMP 中使用零。

'dd-MM-yy hh:mm:ss'

'23-06-11 10:11:12'

'2011-06-23 10:11:12'

您可以按任意顺序使用说明符,只要该顺序与您提供的输入字符串的含义相匹配。以下下一个示例的模板和输入字符串与本示例具有相同的含义(以及相同的输出 TIMESTAMP),但它们指定了几天前的几个月和小时前的秒数。

'MM-dd-yy ss:hh:mm'

'06-23-11 12:10:11'

'2011-06-23 10:11:12'

在上面使用的模板中,月份和日说明符的顺序与上面的示例相反,秒的说明符在小时之前而不是分钟之后;但是由于输入字符串还将月份放在天前,秒放在小时之前,因此(和输出时间戳)是与上面的示例相同。

'yy-dd-MM ss:hh:mm'

'06-23-11 12:10:11'

'2006-11-23 10:11:12'

上面使用的模板反向使用年份和月份说明符(与上面的示例相比),而输入字符串保持不变。在这种情况下,输出 TIMESTAMP 使用输入字符串的第一个元素作为年份,第二个元素作为日期,第三个元素作为月份。

'dd-MM-yy hh:mm'

'23-06-11 10:11:12'

'2011-06-23 10:11:00'

如上所述,在模板中省略秒数的情况下,输出 TIMESTAMP 使用 00 秒。任意数量的 y 说明符都会产生相同的结果;但是如果输入字符串无意中使用了 1 而不是 11 作为年份,如 '23-06-1 10:11:12 ',则输出时间戳变为 '0001-06-23 10:11:00'。

'MM/dd/yy hh:mm:ss'

'12/19/11 10:11:12'

'12/19/11 12:11:12'

'2011-12-19 10:11:12'

'12/19/11 00:11:12'

如果模板和输入在相同位置使用斜杠作为分隔符就可以了,如上所述。使用说明符 hh,12:11:10 和 00:11:10 的输入时间与早晨时间的含义相同。

'MM/dd/yy HH:mm:ss'

'12/19/11 12:59:59'

'12/19/11 21:08:07'

'2011-12-19 00:11:12'

'2011-12-19 12:11:12'

'2011-12-19 12:59:59'

'2011-12-19 21:08:07'

输入字符串值'2011-12-19 00:11:12'要么'2011-12-19 12:11:12'这个模板会失败,因为'2011'不是一个月,正如 template-string 要求/预期的那样'MM/dd/yy HH:mm:ss'.

但是,更改模板会提供有用的输出:

values(cast(CHAR_TO_TIMESTAMP('y/MM/dd HH:mm:ss', '2011/12/19 00:11:12') as varchar(19))); 'EXPR$0' '2011-12-19 00:11:12'

已选择 1 行

'12/19/11 00:11:12'上面的模板会失败 ('y/MM/dd'),因为 19 不是有效的月份;提供 '12/11/19 00:11:12'作品。

'2011-12-19 12:11:12'作为输入会失败,因为破折号与模板中的斜杠不匹配,'2011/12/19 12:11:12'作品。

请注意,对于中午 12 点之后的时间(即下午和晚上的时间),小时说明符必须是 HH 而不是 hh,并且输入字符串必须以 24 小时制时间指定下午或晚上的时间,小时从 00 到 23 不等。

使用说明符 HH,12:11:10 和 00:11:10 的输入时间具有不同的含义,第一个是下午的时间,第二个是早上的时间。

使用说明符 hh,从 12:00 到 11:59:59 的时间是早晨:

  • 给定说明符 hh: mm: ss,输出时间戳将包括'00:09:08'早上输入字符串 '12:09:08' 和输入字符串'00:09:08'; 而,

  • 给定说明符 hh: mm: ss,输入字符串的输出时间戳'00:09:08'早上将包括'00:09:08'

    以及输入字符串的输出时间戳'12:09:08'下午将包括'12:09:08'.