|
Программирование >> Программный интерфейс приложений
Тип YEAR Тип year является экономичным способом хранения данных по году. Его диапазон 1901 - 2155. Этот тип удобен, когда требуется хранить только ту часть даты, которая обозначает год. Таким образом можно хранить год рождения, год избрания в президенты и т.д. Это значит, что всякий раз, когда не требуется полная дата, тип year является более эффективным, чем другие типы данных. В объявлении типа year можно указать спецификацию выводимых значений М. Его диапазон 2 - 4. Значение по умолчанию 4 цифры. Тип tinyint требует столько же памяти, сколько и year (один байт), но имеет другой диапазон принимаемых значений. Для того чтобь[ получить аналогичный диапазон значений, необходимо прибегнуть к помощи типа smallint, который занимаст вдвое больше места. Тип year эффективнее испстьзует память. В числе других преимуществ типа year перед целочисленными типами можно назвать и то, что СУБД MySQL всегда преобразует двухцифровое значение в четырехцифровое. Так, годы 14 и 97 будут преобразованы в 1997 и 2014. Но нужно предупредить, что добавление значения 00 приведет к записи значения 0000, а не 2000. А строковое значение 00 будет корректно преобразовано в 2000. Атрибуты столбцов календарного типа Эти типы данных не имеют каких-либо специальных атрибутов. Среди обших атрибутов, применяющихся с этими типами данных, можно назвать такие как null и not null. Атрибут null присваивается по улголчанию. Кроме того, для указания значения по умолчанию можно прибегнуть к атрибуту default. Если это значение не указано, значение по умолчанию принимается автоматически. Так, столбцы, которые могут принимать пустое значение, по умолчанию принимают значение null, в противном случае - 0. Работа со столбцами календарного типа СУБД MySQL интерпретирует дату и время в различных форматах. Значения типа date можно представить в любом из представленных форматов, включая как строковую, так и цифровую формы. Допустмые форматы как для дат, так и для времени, приведены в табл. 2.13. Таблица 2.13. Форматы ввода данных календарного типа
Окончание табл. 2 13
Форматы, имеющие две цифры для отображения значения года, интерпретируются в соответствии с правилом, детально описанным в разделе Работа со столбцами календарного типа . Для строковых типов, которые имеют символы-разделители, в качестве таковых совсем не обязательно использовать знаки - для дат или : для времени. В качестве разделителя может использоваться любой символ. Интерпретация данных зависит от их контекста, а не от разделителя. Например, несмотря на то, что часы, минуты и секунды обычно разделяются символом : , СУБД MySQL не станет интерпретировать значение, содержащее : , как время в контексте, когда ожидается дата. Кроме того, в строковых форматах, которые содержат разделители, совсем необязательно указывать две цифры для описания месяца, дня, часа, минуты или секунды, которые меньше десяти. Обратите внимание, что все эти строки идентичны. 2012-02-03 05:04:09 2012-2-03 05:04:09 2012-2-3 05:04:09 2012-2-3 5:04:09 2012-2-3 5:4:09 2012-2-3 5:4:9 Совет в зависимости от типа (строковые данные или цифровые) значения с ведущими нулями могут интерпретироваться по-разному. С одной стороны, 00123Г будет видна как строка из шести цифр, 2000-12-31 как дата типа date, 2000-12-31 0000:00 как дата типа datetime. С другой стороны, при интерпретации числового значения 001231° получим 1231, что сделает дальнейшую интерпретацию этого числа довольно проблематичным Поэтому лучше пользоваться строковыми данными или полностью квалифицировать значения, если используются цифровые типы данных (т.е. 20001231 для date или 200012310000 для datetime). В общем случае можно достаточно свободно обмениваться данными между типами данных date, datetime и timestamp, но при этом следует помнить следующее. При присвоении значения datetime, timestamp столбцу типа date временные показатели будут утеряны. При присвоении значения date столбцам типа datetime, timestamp временной части будет присвоено нулевое значение. Типы имеют различные диапазоны значений. В частности, тип timestamp имеет более офаниченный диапазон (от 1970 до 2037). Так, присвоение даты раньше 1970 года из столбца типа datetime столбцу типа timestamp приведет к ошибочным результатам. Аналогичная ситуация возможна с датами в будущем. СУБД MySQL предлагает много функций, работающих с календарными данными. Более подробную информацию о календарных функциях можно найти в приложении В, Операторы и функции . Интерпретация неоднозначных значений года Все типы данных, содержащие информацию о годе (date, datetime, timestamp, year), могут преобразовывать значения, содержащие две цифры, в значения, состоящие из четырех цифр. Это преобразование подчиняется следующим правилами Значения 00 - 69 преобразуются в 2000 - 2069. Значения 70 - 99 преобразуются в 1969 - 1999. В MySQL версии 4.0 правила будут изменены: 69 будет интерпретироваться как 1969 год, а не 2069. Это сделано в соответствии со стандартом Х/Ореп, применяемым в ОС UNIX.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |