Преобразование строковых или числовых значений времени в формат даты

Значения времени ваших временных данных рекомендуется хранить в одном из выделенных полей даты. Эти типы полей базы данных предназначены специально для хранения информации о времени и датах. Они более эффективны с точки зрения скорости обработки запроса и поддерживают более сложные запросы в базе данных по сравнению с вариантами хранения значений времени в числовом или строчном поле.

Более подробно о рекомендациях по хранению временных данных

Если значения времени хранятся в строковом или числовом поле (short, long, float или double), их можно конвертировать в тип поля даты с помощью инструмента геообработки Конвертировать поле времени. Используйте этот инструмент, чтобы задать стандартный или пользовательский формат времени для интерпретации значений даты и времени и преобразования их в один из форматов даты.

Стандартные форматы поддерживаются с помощью инструмента Конвертировать поле времени. Но если есть значения времени, хранящиеся в строчном поле, имеющем пользовательский формат даты и времени, можно создать пользовательский формат даты и времени, который будет применяться для интерпретации данных. Например, при использовании инструмента геообработки Конвертировать поле времени для преобразования значения времени Вторник, 20 августа 2002 г., хранящегося, как строка, в формат даты, укажите формат входного времени в виде дддд, ММММ дд, гггг.

Примечание:

  • При использовании инструмента Конвертировать поле времени список стандартных поддерживаемых форматов входного времени меняется в зависимости от того, хранятся ли входные значения времени в строковом или числовом поле (short, long, float или double).
  • Инструмент Конвертировать поле времени позволяет задавать пользовательские форматы даты и времени только в том случае, если значения времени хранятся в строчном поле. Когда значения времени хранятся в числовых полях, пользовательские форматы даты и времени не поддерживаются.

Строки формата даты и времени

Строка формата даты и времени содержит информацию о дате и времени в согласованном формате. Каждая строка формата состоит из комбинации форматов из доступных типов формата. Примерами типов формата являются день недели, месяц, час и секунда. В одной строке формата даты и времени следует использовать только один формат из каждого типа формата. Однако не каждый тип формата должен быть включен в строку формата. Например, часто в строку формата даты включают только информацию о годе, месяце и дне месяца, без информации о времени дня.

Строка формата может содержать только информацию о времени, только информацию о дате или комбинированную информацию о дате и времени. Строки формата могут также включать разделители, такие как запятые, которые разделяют форматы, используемые в строке формата.

Вам нужно проанализировать ваши данные, чтобы определить подходящую строку формата даты и времени для интерпретации ваших данных. В следующих примерах показаны различные строки формата для интерпретации дат и времени:

Примеры строк формата даты и времени

Пример значения данныхСтрока формата

30/05/1978 02:34:56

дд/мм/гггг чч:мм:сс

02.04.2010 14:39:28

м/д/гггг ч:мм:сс тт

06:05:12

ч:мм:сс тт

23:31:18.345

ЧЧ:мм:сс.с

Вторник, 20 августа 2002 г.

dddd, MMMM dd, yyyy

Среда, 31 августа 1994 г.

ддд, МММ дд гггг

03281999030456

ММддггггЧЧммсс

2015-07-04T13:11:26.002

гггг-ММ-ддTЧЧ:мм:сс.ссс

Настройка форматов даты и времени

Строка пользовательского формата состоит из одного или нескольких спецификаторов формата даты и времени. В следующей таблице приведены спецификаторы формата, которые можно использовать для создания настраиваемого формата даты и времени для интерпретации данных:

Спецификаторы формата даты и времени

Спецификатор форматаТип форматаОписание

d

День месяца

День месяца, указанный цифрами, без нуля в начале для дат из одной цифры.

dd

День месяца

День месяца, указанный цифрами, с нулем в начале для дат из одной цифры.

ddd

День недели

Аббревиатура названия дня недели. Функция использует сокращения, принятые в заданном языке (регионе), например, Mon в Английский (США).

Подсказка:

Дни недели не проверяются при интерпретации значения даты; поэтому не имеет значения, соответствует ли день недели, указанный в ваших данных, дате, представленной в значении данных.

dddd

День недели

Полное название дня недели. Функция использует полные названия дней, принятые в заданном языке (регионе), например, Monday в Английский (США).

Подсказка:

Дни недели не проверяются при интерпретации значения даты; поэтому не имеет значения, соответствует ли день недели, указанный в ваших данных, дате, представленной в значении данных.

М

Месяц

Месяц, указанный цифрами, без нуля в начале для дат из одной цифры.

MM

Месяц

Месяц, указанный цифрами, с нулем в начале для месяцев из одной цифры.

MMM

Месяц

Трехбуквенное сокращение названия месяца. Функция использует сокращенные названия месяцев, принятые в заданном языке (регионе), например, Nov в Английский (США).

MMMM

Месяц

Полное название месяца. Функция использует полные названия месяцев, принятые в заданном языке (регионе), например, November для Английского языка (США) и noviembre для Испанского (Испания).

y

Год

Две последние цифры года, без указания нуля впереди для значений, последние две цифры которых меньше 10.

Подсказка:

Таким образом можно представить значения года в диапазоне 1950-2049. Значение, равное 49 или меньше, будет интерпретироваться, как относящееся к 21 веку, например, 7 будет интерпретироваться как 2007. Значение, равное 50 или больше, будет интерпретироваться, как относящееся к 20 веку, например, 67 будет интерпретироваться как 1967.

yy

Год

Две последние цифры года, с указанием нуля впереди для значений, последние две цифры которых меньше 10.

Подсказка:

Таким образом можно представить значения года в диапазоне 1950-2049. Значение, равное 49 или меньше, будет интерпретироваться, как относящееся к 21 веку. Например, 7 будет интерпретировано как 2007. Значение, равное 50 или больше, будет интерпретироваться, как относящееся к 20 веку, например, 67 будет интерпретироваться как 1967.

yyy

Год

Год представлен тремя цифрами. Таким образом можно представить значения года в диапазоне 1-999.

yyyy

Год

Четыре цифры года.

gg

Эра

Строка периода/эры. Функция использует значения эры, принятые в заданном языке (регионе).

T

Разделитель времени

Разделитель, который разделяет предшествующее значение даты и последующее значение времени. Эта функция обычно используется в форматах ISO.

h

Час

Значение часа без нуля впереди для одноразрядных значений; 12-часовая шкала.

H

Час

Значение часа без нуля впереди для одноразрядных значений; 24-часовая шкала.

hh

Час

Значение часа с нулем впереди для одноразрядных значений; 12-часовая шкала.

HH

Час

Значение часа с нулем впереди для одноразрядных значений; 24-часовая шкала.

m

Минута

Число минут без нуля впереди для одноразрядных значений.

mm

Минута

Число минут с нулем впереди для одноразрядных значений.

s

Секунда

Число секунд без нуля впереди для одноразрядных значений.

ss

Секунда

Число секунд с нулем впереди для одноразрядных значений.

s.s

Секунда

Число секунд, включая доли секунды, без нуля впереди для одноразрядных значений. Хотя в формате указан только один десятичный знак, можно использовать любое число десятичных знаков.

Внимание:

Точность субсекундных значений ограничивается свойствами, поддерживаемыми типом данных поля времени. Например, при использовании поля времени типа данных float или double следует ожидать ошибок округления значений.

ss.s

Секунда

Число секунд, включая доли секунды, с нулем впереди для одноразрядных значений. Хотя в формате указан только один десятичный знак, можно использовать любое число десятичных знаков.

Внимание:

Точность значений с долями секунды ограничена точностью, которая поддерживается для типа данных поля времени. Например, если типом данных поля времени является float или double, могут возникнуть неточности, связанные с округлением.

t

Маркер времени

Односимвольная строка маркера времени: A (до полудня) или P (после полудня).

tt

Маркер времени

Многосимвольная строка маркера времени, такая как AM или PM.

z

Указатель часового пояса

Этот суффикс указывает, что значение времени указано в формате всемирного координированного времени (UTC). Эта функция обычно используется в форматах ISO.

Разделители

Разделители — это символы, разделяющие информацию в текстовых значениях данных. В качестве разделителей обычно используют запятые (,), двоеточия (:) и пробелы (), однако нет никаких ограничений на использование других разделителей для создания строк форматов. Вы можете создавать строки формата без каких-либо разделителей вообще, особенно при интерпретации даты и времени, хранящихся в числовых полях, потому что числовые поля не могут хранить большинство часто используемых символов-разделителей.

В редких случаях данные могут содержать разделители, которые конфликтуют с форматами, приведенным в таблице выше. В таких случаях необходимо использовать одиночные кавычки для того, чтобы обособить разделители в строке формата. В общем, одиночные кавычки могут использоваться для обособления любых разделителей в строке формата, но использовать их рекомендуется только если есть риск конфликта. Эти концепции проиллюстрированы в примерах ниже.

Пример значения данныхФорматИнтерпретируемые дата или время (отображаемые в виде MM/dd/yyyy или HH:mm:ss)

месяц12день30год2010

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

12/30/2010

30/12/2010

ddMMyyyy

12/30/2010

Время:18ч6мин3сек

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

18:06:03

18:6:3

HH:m:s

18:06:03

Язык (регион)

Заданный язык (регион) важен, поскольку определяет допустимые значения данных для полных представлений некоторых форматов даты в таблице, приведенной выше. Например, значение November будет правильно интерпретировано для MMMM только при выборе англоязычного региона. В некоторых случаях, если строка формата не использует длинных представлений, региональные настройки не имеют значения для интерпретации даты, но региональные настройки могу повлиять на интерпретацию обозначений AM и PM. Если указатели AM или PM не определены, используются указатели AM и PM по умолчанию для данного языка (региона).

Язык (региональные настройки) не влияет на форматы, используемые для создания строк формата. Например, символ M (или MM, MMM, MMMM) используется для представления месяцев независимо от выбранного языка (региона). В примерах ниже иллюстрируется использование языка (региона) для интерпретации дат.

Значение данныхСтрока форматаМестоположениеИнтерпретируемая дата (MM/dd/yyyy)

30 ноября 2010 г.

MMMM dd, yyyy

Английский (США)

11/30/2010

30 ноября 2010 г.

MMMM dd, yyyy

Испанский (Испания)

11/30/2010

Пон, 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)

18:12:34

h:mm:ss t

P

18:12:34

18:12:34

ч:мм:сс тт

после обеда

18:12:34

6:12:34

H:mm:ss

PM

6:12:34

18:12:34

ч:мм:сс тт

PM

18:12:34

Связанные разделы