

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

# 日期和时间模式
<a name="sql-reference-parse-timestamp-format"></a>

日期和时间格式由日期和时间模式字符串指定。在这些模式字符串中，从 A 到 Z 和从 a 到 z 的未加引号的字母表示数据或时间值的组件。如果字母或文本字符串用一对单引号括起来，则该字母或文本不会被解释，而是按原样使用，模式字符串中的所有其他字符也是如此。在打印期间，该字母或文本将按原样复制到输出字符串；在解析期间，它们将与输入字符串匹配。"''" 表示一个单引号。

以下模式字母是为指定的日期或时间组件定义的。从“A”到“Z”和从“a”到“z”的所有其他字符均已保留。有关模式字母的字母顺序，请参阅[按字母顺序排列的日期和时间模式字母](#PATTERNSINALFAORDR)。


| 日期或时间组件 | 模式字母 | 以文本或数字形式呈现 | 示例 | 
| --- | --- | --- | --- | 
| 时代标志 | G | [文本](#sql-reference-parse-timestamp-format-text) | AD | 
| Year | y | Year | 1996；96 | 
| 年中某月 | M | Month | 七月；7 月；07 | 
| 年中某周 | w | 数字 | 27 | 
| 月中某周 | W | 数字 | 2 | 
| 年中某日 | D | 数字 | 189 | 
| 月中某日 | d | 数字 | 10 | 
| 月中某周某日 | F | 数字 | 2 | 
| 周中某日 | E | [文本](#sql-reference-parse-timestamp-format-text) | EE=Tu；EEE=Tue；EEEE=Tuesday | 
| 上午/下午标记 | a | [文本](#sql-reference-parse-timestamp-format-text) | PM | 
| 一天中的时 (0-23) | H | 数字 | 0 | 
| 一天中的时 (1-24) | k | 数字 | 24 | 
| 一小时过去了 am/pm (0-11) | K | 数字 | 0 | 
| 一小时过去了 am/pm (1-12) | h | 数字 | 12 | 
| 时中的分 | m | 数字 | 30 | 
| 分中的秒 | s | 数字 | 55 | 
| 毫秒 | S | 数字 | 978 | 
| 时区 | z | General | Pacific Standard Time；PST；GMT-08:00 | 
| 时区 | Z | RFC | -0800 | 

模式字母通常是重复的，因为它们的数字决定了确切的呈现方式：

## 文本
<a name="sql-reference-parse-timestamp-format-text"></a>

格式化时，如果模式字母数为 4 或更多，则使用完整形式；否则使用简短或缩写形式（如果有）。解析时，两种形式都可接受，与模式字母数无关。

## 数字
<a name="w2aac22c17c23c13"></a>

格式化时，模式字母数是最小位数，较短的数字将用零填补到此数量。解析时，除非需要分隔两个相邻字段，否则模式字母数将被忽略。

## Year
<a name="w2aac22c17c23c15"></a>

如果时区有名称，则将被解释为文本。对于表示 GMT 偏移值的时区，使用以下语法：

```
GMTOffsetTimeZone:
GMT Sign Hours : Minutes
Sign: one of
+ -
Hours:
Digit
Digit Digit
Minutes:
Digit Digit
Digit: one of
0 1 2 3 4 5 6 7 8 9
```

时必须介于 0 和 23 之间，分必须介于 00 和 59 之间。格式与语言环境无关，数字必须取自 Unicode 标准的基本拉丁语块。

解析时，还接受 RFC 822 时区。

## RFC 822 时区
<a name="w2aac22c17c23c17"></a>

格式化时，使用 RFC 822 4 位数的时区格式：

```
RFC822TimeZone:
Sign TwoDigitHours Minutes
TwoDigitHours:
Digit Digit
```

TwoDigitHours 必须介于 00 和 23 之间。其他定义与一般时区相同。

解析时，还接受一般时区。

SimpleDateFormat 还支持 “本地化的日期和时间模式” 字符串。在这些字符串中，上述模式字母可以替换为其他依赖于区域设置的模式字母。 SimpleDateFormat 不涉及图案字母以外的其他文本的本地化；这取决于班级的客户。

## 示例
<a name="sqlrf-parsetimestampformat-examples"></a>

以下示例显示了在美国语言环境中如何解释日期和时间模式。给定日期和时间是美国太平洋时区的当地时间 2001-07-04 12:08:56。


| 日期和时间模式 | 结果 | 
| --- | --- | 
| "yyyy.MM.dd G 'at' HH:mm:ss z" | 2001.07.04 AD at 12:08:56 PDT | 
| "EEE, MMM d, ''yy" | Wed, Jul 4, '01 | 
| "h:mm a" | 12:08 PM | 
| "hh 'o''clock' a, zzzz" | 12 o'clock PM, Pacific Daylight Time | 
| "K:mm a, z" | 0:08 PM, PDT | 
| "yyyyy.MMMMM.dd GGG hh:mm aaa" | 02001.July.04 AD 12:08 PM | 
| "EEE, d MMM yyyy HH:mm:ss Z" | Wed, 4 Jul 2001 12:08:56 -0700 | 
| “yy MMdd HHmmss Z” | 010704120856-0700 | 
| "yyyy-MM-dd'T'HH:mm:ss.SSSZ" | 2001-07-04T12:08:56.235-0700 | 

## 按字母顺序排列的日期和时间模式字母
<a name="PATTERNSINALFAORDR"></a>

上面按日期或时间组件顺序显示的相同模式字母按字母顺序显示在下面，便于参考。


| 模式字母 | 日期或时间组件 | 以文本或数字形式呈现 | 示例 | 
| --- | --- | --- | --- | 
| a | 上午/下午标记 | 文本 | PM | 
| D | 年中某日 | 数字 | 189 | 
| d | 月中某日 | 数字 | 10 | 
| E | 周中某日 | 文本 | EE=Tu；EEE=Tue；EEEE=Tuesday | 
| F | 月中某周某日 | 数字 | 2 | 
| G | 时代标志 | 文本 | AD | 
| H | 一天中的时 (0-23) | 数字 | 0 | 
| h | 一小时过去了 am/pm (1-12) | 数字 | 12 | 
| k | 一天中的时 (1-24) | 数字 | 24 | 
| K | 一小时过去了 am/pm (0-11) | 数字 | 0 | 
| M | 年中某月 | Month | 七月；7 月；07 | 
| m | 时中的分 | 数字 | 30 | 
| s | 分中的秒 | 数字 | 55 | 
| S | 毫秒 | 数字 | 978 | 
| w | 年中某周 | 数字 | 27 | 
| W | 月中某周 | 数字 | 2 | 
| y | Year | Year | 1996；96  | 
| z | 时区 | General | Pacific Standard Time；PST；GMT-08:00  | 
| Z | 时区 | RFC | -0800 | 