|В следующих разделах упоминания значений даты и времени, представленных в |виде "character string" (символьной строки), этот термин заменен на "строчное" |представление. DB2 теперь поддерживает (только для баз данных Unicode) |представления значений даты и времени в виде "графической строки".
|Значения с типом данных DATE, TIME или TIMESTAMP представляются во |внутренней форме, прозрачной для пользователя. Однако значения даты, |времени и отметки времени могут также представляться строками. Это |удобно, поскольку нет констант или переменных с типами данных DATE, TIME или |TIMESTAMP. Чтобы можно было получить значение даты и времени, его нужно |сначала присвоить строчной переменной. Для преобразования значения даты |и времени в строчное представление можно использовать функцию CHAR или функцию |GRAPHIC (только для баз данных Unicode). Для этого строчного |представления обычно используется формат даты и времени по умолчанию для кода |страны/региона базы данных (если этот формат не переопределен с помощью опции |DATETIME при прекомпиляции или связывании этой программы с базой |данных).
|Строки большой длины (значение LONG VARCHAR или LONG VARGRAPHIC), |независимо от их реальной длины, нельзя использоваться для представления |значения даты и времени (SQLSTATE 42884).
|Когда допустимое строчное представление значения даты и времени |используется в операции с внутренним значением даты и времени, перед |выполнением операции это представление преобразуется во внутренний формат |даты, времени или отметки времени.
|Строки даты, времени и отметки времени должны содержать только символы и |цифры.
|Определения этих терминов немного изменены. Упоминания представлений |"character string" (символьной строки) изменены на "строчные" |представления.
|Типы данных DATE, TIME и TIMESTAMP могут теперь преобразовываться в типы |GRAPHIC и VARGRAPHIC. Типы данных GRAPHIC и VARGRAPHIC могут теперь |преобразовываться в типы DATE, TIME и TIMESTAMP. Поддержка графических |строк доступна только для баз данных Unicode.
|Теперь графические строки и значения DATE, TIME и TIMESTAMP совместимы по |типам данных в операциях присваивания и сравнения. Поддержка |графических строк доступна только для баз данных Unicode.
|Основное правило для присваивания значений даты и времени: значение |типа DATE, TIME или TIMESTAMP может присваиваться только столбцу с таким же |типом данных (DATE, TIME или TIMESTAMP) или строчной переменной или столбцу |строчного типа фиксированной или переменной длины. Такое значение |нельзя присваивать переменной или столбцу типа LONG VARCHAR, CLOB, LONG |VARGRAPHIC, DBCLOB или BLOB. | |
|При присваивании значения даты и времени строчной переменной или строчному |столбцу автоматически выполняется преобразование значения в строчное |представление. Ни из одной части значения даты, времени или отметки |времени не удаляются ведущие нули. Требуемая длина строки назначения |может быть разной в зависимости от формата строчного представления. |Если длина строки назначения больше необходимой и это строка фиксированной |длины, значение дополняется справа пробелами. Если длина строки |назначения меньше необходимой, результат зависит от типа значения даты и |времени и от типа строки назначения.
|Если значение присваивается переменной хоста, применяются следующие |правила: |
|Если используется формат ISO или JIS и длина переменной хоста меньше 8 |символов, значение числа секунд удаляется из результата и присваивается |переменной-индикатору (если она задана). Поле SQLWARN1 области SQLCA |указывает, что это произошло.
|>>-DATE--(--выражение--)--------------------------------------->< | |
|Схема - SYSIBM.
|Функция DATE преобразует данное значение в значение типа date |(дата).
|Ее аргумент должен быть датой, отметкой времени, положительным целым |числом, не превышающим 3652059, правильным строчным представлением даты или |отметки времени или строкой длины 7, тип данных которой не LONG VARCHAR, CLOB, |LONG VARGRAPHIC, DBCLOB или BLOB.
|Только базы данных Unicode поддерживают представления значений даты и |отметки времени в виде графических строк.
|Если аргумент - строка длиной 7, эта строка должна представлять допустимую |дату в формате ггггддд, где гггг - цифры, обозначающие год, |а ддд - цифры, задающие число от 001 до 366, обозначающее день |года.
|Результат этой функции - значение даты. Если аргумент может быть |пустым, результат может быть пустым; если аргумент пустой, результатом |будет пустое значение.
|Другие правила зависят от типа данных аргумента: |
|Примеры:
|Пусть столбец RECEIVED (его тип - отметка времени) содержит внутреннее |представление значения |'1988-12-25-17.12.30.000000'. |
| DATE(RECEIVED)
| DATE('1988-12-25')
| DATE('25.12.1988')
| DATE(35)
||>>-GRAPHIC--(--графическое-выражение--+----------------+--)---->< | '-,--целое-число-' | |
|Схема - SYSIBM.
|Функция GRAPHIC возвращает графическое представление (тип GRAPHIC) для |значения типа графическая строка или значения даты и времени. |
|Результат функции - значение типа GRAPHIC. Если аргумент может быть |пустым, результат может быть пустым; если аргумент пустой, результатом |будет пустое значение.
|Преобразование даты и времени в тип Graphic:
|>>-GRAPHIC--(--выражение-даты-и-времени--+--------------+--)--->< | '-,--+-ISO---+-' | +-USA---+ | +-EUR---+ | +-JIS---+ | '-LOCAL-' | ||
|В качестве кодовой страницы для этой строки используется кодовая страница |базы данных на сервере прикладных программ. |
|>>-TIME--(--выражение--)--------------------------------------->< | |
|Схема - SYSIBM.
|Функция TIME преобразует данное значение в значение типа time |(время).
|Ее аргумент должен быть временем, отметкой времени или правильным строчным |представлением времени или отметки времени, тип данных которого не LONG |VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB или BLOB.
|Только базы данных Unicode поддерживают представления значений времени и |отметки времени в виде графических строк.
|Результат этой функции - значение времени. Если аргумент может быть |пустым, результат может быть пустым; если аргумент пустой, результатом |будет пустое значение.
|Другие правила зависят от типа данных аргумента: |
|Пример: |
| SELECT * FROM IN_TRAY | WHERE TIME(RECEIVED) >= CURRENT TIME + 1 HOUR|
|>>-TIMESTAMP--(--выражение--+------------+--)------------------>< | '-,выражение-' | |
|Схема - SYSIBM.
|Функция TIMESTAMP возвращает значение отметки времени, полученное из |входного значения или пары значений.
|Только базы данных Unicode поддерживают представления значений даты, |времени и отметки времени в виде графических строк.
|Правила для аргументов зависят от того, задан ли второй аргумент. |
|Строка длины 14 должна быть строкой цифр, представляющей допустимые дату и |время в формате ггггммддччннсс, где гггг - год, мм |- месяц, дд - день, чч - час, нн - минута и |сс - секунды. |
|Результат этой функции - значение отметки времени. Если один из |аргументов может быть пустым, результат может быть пустым; если |какой-либо из аргументов пустой, результатом будет пустое значение.
|Другие правила зависят от того, задан ли второй аргумент. |
|Пример: |
| TIMESTAMP(START_DATE, START_TIME)
|Возвращает значение |'1988-12-25-17.12.30.000000'. |
|Преобразование символьной строки в тип Vargraphic:
|>>-VARGRAPHIC--(--выражение-символьной-строки--)--------------->< | |
|Преобразование даты и времени в тип Vargraphic:
|>>-VARGRAPHIC--(--выражение-даты-и-времени--)------------------>< | |
|Преобразование типа Graphic в тип Vargraphic:
|>>-VARGRAPHIC--(--выражение-графической-строки------------------> | |>--+----------------+--)--------------------------------------->< | '-,--целое-число-' | |
|Схема - SYSIBM.
|Функция VARGRAPHIC возвращает представление в виде графической строки |для: |
|Результат этой функции - графическая строка переменной длины (тип данных |VARGRAPHIC). Если первый аргумент может быть пустым, результат может |быть пустым; если первый аргумент пустой, результатом будет пустое |значение.
|Преобразование символьной строки в тип Vargraphic |
|Атрибут длины результата равен атрибуту длины этого аргумента.
|Обозначим значение выражение-символьной-строки как S. |Каждый однобайтный символ в S преобразуется в результате в его эквивалентное |двухбайтное представление или в двухбайтный заменяющий символ; все |двухбайтные символы в S переносятся без изменений. Если первый байт |двухбайтного символа оказывается последним байтом S, он преобразуется в |двухбайтный заменяющий символ. Последовательный порядок символов в S |остается неизменным.
|Другие особенности преобразования. |
|Преобразование даты и времени в тип Vargraphic |
|Преобразование типа Graphic в тип Vargraphic |
|Если длина значения выражения-графической-строки больше атрибута |длины результата, выполняется усечение и возвращается предупреждение (SQLSTATE |01004); предупреждение не возвращается, если все усеченные пробелы были |пробелами или выражение-графической-строки было длинной строкой (LONG |VARGRAPHIC или DBCLOB).