

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

# 日期时间转换函数
<a name="sql-reference-datetime-conversion-functions"></a>

您可以使用模式化字母来指定日期和时间格式。日期和时间模式字符串使用从“A”到“Z”和从“a”到“z”的未加引号的字母，每个字母都代表一个格式元素。

有关更多信息，请参阅 Oracle 网站 SimpleDateFormat上的[课程](http://docs.oracle.com/javase/7/docs/api/index.html?java/text/SimpleDateFormat.html)。

**注意**  
如果包含其他字符，则将在格式化期间合并到输出字符串中，或者在解析期间与输入字符串进行比较。

下表中的模式字母已定义（从“A”到“Z”和从“a”到“z”的所有其他字符均已保留）。


| 字母 | 日期或时间组件 | 呈现方式 | 示例 | 
| --- | --- | --- | --- | 
| y | Year | Year | yyyy; yy 2018;18 | 
| Y | 周 年 | Year | YYYY; YY 2009; 09 | 
| M | 年中某月 | Month | MMM;MM;MM July; Jul; 07 | 
| w | 年中某周 | 数字 | ww; 27 | 
| W | 月中某周 | 数字 | W 2 | 
| D | 年中某日 | 数字 | DDD 321 | 
| d | 月中某日 | 数字 | dd 10 | 
| F | 月中某周某日 | 数字 | F 2 | 
| E | 周中某日名称 | 文本 | Tuesday; Tue | 
| u | 周中某日编号（1 = 星期一……7 = 星期日） | 数字 | 1 | 
| a | 上午/下午标记 | 文本 | PM | 
| H | 一天中的时 (0-23) | 数字 | 0 | 
| k | 一天中的时 (1-24) | 数字 | 24 | 
| K | 一小时过去了 am/pm (0-11) | 数字 | 0 | 
| h | 一小时过去了 am/pm (1-12) | 数字 | 12 | 
| m | 时中的分 | 数字 | 30 | 
| s | 分中的秒 | 数字 | 55 | 
| S | 毫秒 | 数字 | 978 | 
| z | 时区 | 一般时区 | Pacific Standard Time; PST; GMT-08:00 | 
| Z | 时区 | RFC 822 时区 | -0800 | 
| X | 时区 | ISO 8601 时区 | -08; -0800; -08:00 | 



您可以按照 YYYY 的思路通过重复模式字母来确定确切的呈现方式。

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

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

**Year**  
如果格式化程序的日历是公历，则适用以下规则。
+ 格式化时，如果模式字母数为 2，则年将截断为 2 位数；否则将被解释为数字。
+ 解析时，如果模式字母数大于 2，则年按字面解释，与位数无关。因此，使用模式 “”，MM/dd/yyyy“01/11/12” 可以解析到公元 12 年 1 月 11 日。

要使用缩写的年份模式（“y” 或 “yy”）进行解析， SimpleDateFormat 必须解释相对于某个世纪的缩写年份。它通过将日期调整为创建 SimpleDateFormat 实例之前的 80 年和之后的 20 年以内来实现这一目标。例如，使用 “MM/dd/yy” 的模式和在 2018 年 1 月 1 日创建的 SimpleDateFormat 实例，字符串 “01/11/12” 将被解释为 2012 年 1 月 11 日，而字符串 “05/04/64” 将被解释为 1964 年 5 月 4 日。在解析过程中，只有由 Character.isDigit(char) 定义的恰好两位数字的字符串才会被解析为默认世纪。任何其他数字字符串，例如一位数的字符串、三位或更多位数的字符串或不全是数字的两位数字符串（例如“-1”），均按字面解释。因此，使用相同的模式，“01/02/3”或“01/02/003”将解析为公元 3 年 1 月 2 日。同样，“01/02/-3”解析为公元前 4 年 1 月 2 日。

否则，将应用日历系统特定的格式。在格式化和解析时，如果模式字母数为 4 或更多，则使用日历特定的长格式。否则，将使用日历特定的简短或缩写格式。