Значения времени ваших временных данных рекомендуется хранить в одном из выделенных полей даты. Эти типы полей базы данных предназначены специально для хранения информации о времени и датах. Они более эффективны с точки зрения скорости обработки запроса и поддерживают более сложные запросы в базе данных по сравнению с вариантами хранения значений времени в числовом или строчном поле.
Более подробно о рекомендациях по хранению временных данных
Если значения времени хранятся в строковом или числовом поле (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 | ММддггггЧЧммсс |
Настройка форматов даты и времени
Строка пользовательского формата состоит из одного или нескольких спецификаторов формата даты и времени. В следующей таблице приведены спецификаторы формата, которые можно использовать для создания настраиваемого формата даты и времени для интерпретации данных:
Спецификаторы формата даты и времени
Спецификатор формата | Тип формата | Описание |
---|---|---|
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 |