DATEFORMAT 和 TIMEFORMAT 字符串
COPY 命令使用 DATEFORMAT 和 TIMEFORMAT 选项来解析源数据中的日期和时间值。DATEFORMAT 和 TIMEFORMAT 是格式化字符串,必须与源数据的日期和时间值的格式相匹配。例如,加载具有日期值 Jan-01-1999
的源数据的 COPY 命令必须包括以下 DATEFORMAT 字符串:
COPY ... DATEFORMAT AS 'MON-DD-YYYY'
有关管理 COPY 数据转换的更多信息,请参阅数据转换参数。
DATEFORMAT 和 TIMEFORMAT 字符串可包含日期时间分隔符(例如‘-
’、‘/
’或‘:
’)以及下表中的日期部分和时间部分格式。
注意
如果您无法将日期或时间值的格式与以下日期部分和时间部分相匹配,或如果您的日期和时间值使用的格式彼此不同,则请将 'auto'
参数与 DATEFORMAT 或 TIMEFORMAT 参数结合使用。在使用 DATEFORMAT 或 TIMEFORMAT 字符串时,'auto'
参数会识别几种不受支持的格式。有关更多信息,请参阅 在 DATEFORMAT 和 TIMEFORMAT 中使用自动识别。
日期部分或时间部分 | 意义 |
---|---|
YY | 不带世纪的年份 |
YYYY | 带世纪的年份 |
MM | 用数字表示的月份 |
MON | 用名称表示的月份(缩写名称或完整名称) |
DD | 用数字表示的日 |
HH 或 HH24 | 小时(24 小时制) 注意在用于 SQL 函数的 DATETIME 格式字符串中,HH 与 HH12 相同。但是,在用于 COPY 的 DATEFORMAT 和 TIMEFORMAT 字符串中,HH 与 HH24 相同。 |
HH12 | 小时(12 小时制) |
MI | 分钟 |
SS | 秒 |
AM 或 PM | 经线标识符(适用于 12 小时制) |
默认格式日期是 YYYY-MM-DD。不带时区 (TIMESTAMP) 的默认时间戳格式是 YYYY-MM-DD HH:MI:SS。带时区 (TIMESTAMPTZ) 的默认时间戳格式是 YYYY-MM-DD HH:MI:SSOF,其中 OF 是与 UTC 的偏移两个(例如,-8:00)。您不能在 timeformat_string 中包含时区标识符(TZ、tz 或 OF)。秒 (SS) 字段还支持小数秒到微秒级别的细节。要加载格式与默认格式不同的 TIMESTAMPTZ 数据,请指定“自动”。
以下是您在源数据中会遇到的一些示例日期或时间,以及相应的 DATEFORMAT 或 TIMEFORMAT 字符串。
源数据日期或时间的示例 | DATEFORMAT 或 TIMEFORMAT 语法 |
---|---|
03/31/2003 | DATEFORMAT AS 'MM/DD/YYYY' |
March 31, 2003 | DATEFORMAT AS 'MON DD, YYYY' |
03.31.2003 18:45:05 03.31.2003 18:45:05.123456 |
TIMEFORMAT AS 'MM.DD.YYYY HH:MI:SS' |
示例
有关使用 TIMEFORMAT 的示例,请参阅加载时间戳或日期戳。