将字符串型或数值型时间值转换为日期格式

建议将时态数据的时间值存储在日期字段中。日期字段是一个专用于存储时间和日期信息的数据库字段类型。与在数值或字符串字段中存储时间相比,它对于查询性能更为有效,且可支持更加复杂的数据库查询。

如果您将时间值存储在字符串或数值(短整型、长整型、浮点型或双精度型)字段中,则可以使用转换时间字段地理处理工具将其转换为日期字段。使用此工具可以指定用来解释日期和时间值的标准或自定义时间格式,并将其转换为日期格式。

转换时间字段工具支持标准格式。然而,对于使用自定义日期和时间格式存储在字符串字段中的时间值,您可以创建用来解释数据的自定义日期和时间格式。例如,在使用转换时间字段工具将一个存储为字符串形式的时间值“Tuesday, August 20, 2002”转换为日期格式时,请将输入时间格式指定为 dddd, MMMM dd, yyyy。

注:

  • 如果使用转换时间字段工具,则支持的标准输入时间格式列表可能会有所不同,具体取决于输入时间值是存储在字符串字段还是数值(短整型、长整型、浮点型或双精度型)字段中。
  • 仅当时间值存储在字符串字段中时,才能使用转换时间字段工具来指定自定义日期和时间格式。当时间值存储在数值字段时,将不支持自定义日期和时间格式。

日期和时间格式字符串

日期和时间格式字符串是一个文本字符串,用于解释包含日期和时间信息的数据值。每个格式字符串都由包含可用格式类型的格式组合构成。格式类型包括星期、月、小时和秒等。在单个日期和时间格式字符串中,只应使用每种格式类型中的一种格式。但是,并非每种格式类型都需要包含在格式字符串中。例如,在定义日期格式字符串时只使用年、月、日信息而不涉及任何时间信息的做法十分常见。

格式字符串既可以只包含时间信息或日期信息,也可以同时包含日期和时间的组合信息。此外,格式字符串还可以包含用来分隔格式字符串中所用格式的分隔符,如逗号。

您需要对数据进行分析,从而确定用于解释数据的理想日期和时间格式字符串。以下示例显示了用于解释日期和时间的各种格式字符串:

日期和时间格式字符串示例

数据值示例格式字符串

30/05/1978 02:34:56

dd/MM/yyyy HH:mm:ss

2/4/2010 2:39:28 PM

M/d/yyyy h:mm:ss tt

6:05:12 a.m.

h:mm:ss tt

23:31:18.345

HH:mm:ss.s

Tuesday, August 20, 2002

dddd, MMMM dd, yyyy

Wed, Aug 31 1994

ddd, MMM dd yyyy

03281999030456

MMddyyyyHHmmss

自定义日期和时间格式

自定义格式字符串由一个或多个日期和时间格式说明符组成。下表总结了可用来创建解释数据的自定义日期和时间格式的各种格式:

日期和时间格式

格式说明符格式类型说明

数字形式的每月日期,且单位数没有前导零。

dd

数字形式的每月日期,且单位数有前导零。

ddd

星期

以三个字母的缩略形式显示的星期。此函数使用与指定区域设置相关的缩写,例如,“英语(美国)”中的 Mon。

提示:

解释数据值时不会对星期进行验证;因此,数据中显示的星期不必非要与数据值中表示的日期正确对应。

dddd

星期

以全名显示的星期。此函数使用与指定区域设置相关的星期全名,例如,“英语(美国)”中的 Monday。

提示:

解释数据值时不会对星期进行验证;因此,数据中显示的星期不必非要与数据值中表示的日期正确对应。

M

数字形式的月,且单位数没有前导零。

MM

数字形式的月,且单位数有前导零。

MMM

以三个字母的缩略形式显示的月。此函数使用与指定区域设置相关的缩写,例如,“英语(美国)”中的 Nov。

MMMM

以全名显示的月。此函数使用与指定区域设置相关的月份全名,例如,“英语(美国)”中的 November 和“西班牙语(西班牙)”中的 noviembre。

y

年份

两位数的年份,但小于 10 的年份没有前导零。

提示:

用这种方法表示的年份范围可以从 1950 到 2049。小于或等于 49 的值将被视为 21 世纪的年份,例如 7 将被视为 2007 年。大于或等于 50 的值将被视为 20 世纪的年份,例如 67 将被视为 1967 年。

yy

年份

以末两位数显示的年份,但小于 10 的年份具有前导零。

提示:

用这种方法表示的年份范围可以从 1950 到 2049。小于或等于 49 的值将被视为 21 世纪的年份。例如,07 会被视为 2007。大于或等于 50 的值将被视为 20 世纪的年份,例如 67 将被视为 1967 年。

yyy

年份

仅以三位数显示的年份。用这种方法表示的年份范围可以从 1 到 999。

yyyy 年

年份

以四位数显示的年份。

gg

纪元

时期/年代字符串。此函数使用与指定区域设置相关的纪元值。

h

小时

小时,且单位数小时没有前导零;12 小时制

H

小时

小时,且单位数小时没有前导零;24 小时制

hh

小时

小时,且单位数小时具有前导零;12 小时制

HH

小时

小时,且单位数小时具有前导零;24 小时制

m

分钟

分钟,且单位数分钟没有前导零。

mm

分钟

分钟,且单位数分钟具有前导零。

s

秒,且单位数秒没有前导零。

ss

秒,且单位数秒具有前导零。

s.s

包含亚秒的秒,且单位数秒没有前导零。尽管此格式只能显示一位小数,但仍可使用任意位数的小数。

警告:

亚秒的精度将受到时间字段所支持的数据类型的限制。例如,如果使用的时间字段数据类型为浮点型或双精度型,则将出现舍入误差。

ss.s

包含亚秒的秒,且单位数秒具有前导零。尽管此格式只能显示一位小数,但仍可使用任意位数的小数。

警告:

亚秒的精度将受到时间字段所支持的数据类型的限制,例如,如果使用的时间字段数据类型为浮点型或双精度型,则将出现舍入误差。

t

时间标记

单字符时间标记字符串,例如,A 或 P。

tt

时间标记

多字符时间标记字符串,例如,AM 或 PM。

分隔符

分隔符是用于分隔文本数据值信息的字符。常用的分隔符包括逗号 (,)、冒号 (:) 和空格 ( ),但可用于创建格式字符串的分隔符不受任何限制。您可以创建完全不带任何分隔符的格式字符串,尤其是在解释存储在数值字段中的日期和时间时,因为大部分常用的分隔符都无法在数值字段中存储。

在极少数情况下,包含分隔符的数据与上表中的格式冲突。在这种情况下,必须使用单引号来隔离格式字符串中的分隔符。一般来说,单引号可用来隔离格式字符串中的所有分隔符,但除非存在潜在冲突,否则不建议您使用单引号。以下示例对这些概念进行了说明:

数据值示例格式解释的日期或时间(显示为 MM/dd/yyyy 或 HH:mm:ss)

month12day30year2010

'month'MM'day'dd'year'yyyy

12/30/2010

30/12/2010

ddMMyyyy

12/30/2010

Time:18hr6min3sec

'Time:'h'hr'm'min's'sec'

18:06:03

18:6:3

HH:m:s

18:06:03

区域设置

区域设置非常重要,因为它们决定着上表中某些数据格式的较长制图表达的有效数据值。例如,仅当区域设置为英语区域时,才会为 MMMM 对应解释值 November。在某些情况下,如果格式字符串不使用任何较长的制图表达,则区域设置将与日期解释无关,但区域设置可能会影响 AM 和 PM 指示符的解释。如果未指定 AM 或 PM 指示符,则将使用区域设置默认的 AM 和 PM 指示符。

区域设置不会影响用于创建格式字符串的格式。例如,无论何种区域设置,字符 M(或 MM、MMM、MMMM)都表示月份。以下示例说明了如何使用区域设置来解释日期:

数据值格式字符串区域设置解释的日期 (MM/dd/yyyy)

November 30, 2010

MMMM dd, yyyy

英语(美国)

11/30/2010

Noviembre 30, 2010

MMMM dd, yyyy

西班牙语(西班牙)

11/30/2010

Mon, Feb 22, 2010

ddd, MMM dd, yyyy

英语(美国)

2/22/2010

30/12/2010

dd/M/yyyy

所有区域设置

12/30/2010

AM 和 PM 指示符

标准时间标记或 AM 和 PM 指示符存在于每个区域设置中。但您也可以使用某些工具灵活定义您自己的时间标记。如果格式字符串中存在时间标记(t 或 tt),则必须定义表示该时间标记的字符。时间标记仅适用于使用 12 小时制 (h 或 hh)的格式字符串。但并不适用于使用 24 小时制(H 或 HH)的格式字符串。如果您没有定义自己的时间标记,则将使用所选区域设置的标准时间标记。要定义您自己的 AM 和 PM 指示符,时间字段的字段数据类型必须为文本。以下示例将只使用 PM 指示符来简要说明这些概念。这些概念对 AM 指示符同样适用:

数据值格式字符串PM 指示符解释的时间 (HH:mm:ss)

6:12:34 P

h:mm:ss t

P

18:12:34

6:12:34 p.m.

h:mm:ss tt

p.m.

18:12:34

6:12:34

H:mm:ss

PM

6:12:34

6:12:34 PM

h:mm:ss tt

PM

18:12:34

相关主题