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

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

模板 输入字符串 输出时间戳 备注
'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'

上述模板中的 MMM 与“March”匹配;该模板的“逗号空格”与输入字符串匹配。

如果模板缺少逗号,输入字符串也不能有逗号,否则不会有输出;

如果输入字符串缺少逗号,模板也不能有逗号。

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

请注意,上述模板未使用年说明符,从而导致输出时间戳使用了此纪元中最早的年 1970。

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

当使用上述模板时,如果输入字符串为 'March 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'

如果模板和输入在相同的位置使用了短划线,则可以将短划线用作分隔符 (如上所示)。由于模板忽略了小时、分钟和秒,输出时间戳中使用了零。

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

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

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

您可以按任意顺序排列说明符,只要该顺序与您提供的输入字符串的含义相符。下面的下一个示例的模板和输入字符串与本示例中的模板和输入字符串具有相同的含义 (和相同的输出时间戳),但前者在天之前指定了月并在小时之前指定了秒。

'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'

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

'dd-MM-yy hh:mm'

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

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

如上所示,由于模板中忽略了秒,输出时间戳将使用 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' 不是月,不符合模板字符串 '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,对于输入字符串 '12:09:08' 和输入字符串 '00:09:08',输出时间戳将包含上午的时间 '00:09:08'

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

    下午时间的输入字符串 '12:09:08' 的输出时间戳将包含 '12:09:08'