|在下列各节中,已经将对具有“character |string”表示法的日期时间值更改为“string”表示法。DB2 现在仅对于 |Unicode 数据库支持日期时间值的“graphic string”表示法。
|数据类型为 DATE、TIME 或 TIMESTAMP |的值是以对用户透明的内部格式表示的。然而,也可以用字符串来表示日期、时间和时间戳记值。这是很有用的,因为没有常量或变量的数据类型为 |DATE、TIME 或 TIMESTAMP。必须在为字符串变量指定日期时间值之后才能检索它。可以使用 |CHAR 函数或 GRAPHIC 函数(仅对于 Unicode 数据库)来将日期时间值更改为字符串表示法。与数据库的国家/地区代码相关联的日期时间值的缺省格式通常为字符串表示法,除非它在程序进行预编译或者绑定至数据库时被 DATETIME 选项的规范所覆盖。
|不管其长度如何,大对象字符串、LONG VARCHAR 值或 |LONG VARGRAPHIC 值都不能用来表示日期时间值(SQLSTATE 42884)。
|当在对内部日期时间值的操作中使用了日期时间值的有效字符串表示法时, |在执行该操作之前,字符串表示法被转换成日期、时间或时间戳记的内部格式。
|日期、时间和时间戳记字符串只能包含字符和数字。
|已经稍微更改了这些术语的定义。已经将对“character string”表示法的引用更改为“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 变量或列指定 DATE、TIME 或 TIMESTAMP 值。 | |
|当为字符串变量或字符串列指定了日期时间值时,将自动转换为字符串表示法。日期、时间或时间戳记的任何部分都不会省略前导零。根据字符串表示法的格式不同,目标的必需长度也将有所不同。如果目标的长度大于必需的长度,并且目标是定长字符串,则将在右边填充空白。如果目标的长度小于必需的长度,则结果将取决于所涉及的日期时间值的类型以及目标的类型。
|当目标是主变量时,应满足下列规则:
|如果使用了 |ISO 或 JIS 格式,并且如果主变量的长度少于 |8 个字符,如果提供了时间的秒部分,则从结果中省略它,并将它指定给指示器。设置 SQLCA 的 SQLWARN1 字段以指示省略。
|>>-DATE--(--表达式--)------------------------------------------>< | |
|模式为 SYSIBM。
|DATE 函数从值中返回一个日期。
|自变量必须是日期、时间戳记、小于或等于 |3 652 059 的正数、日期或时间戳记的有效字符串表示法,长度为 |7 的不是 LONG VARCHAR、CLOB、LONG VARGRAPHIC、DBCLOB 或 BLOB 数据类型的字符串。
|只有 Unicode 数据库才支持是日期或时间戳记的图形字符串表示法的自变量。
|如果自变量是长度为 7 的字符串,则必须以 yyyynnn 格式来表示有效日期, |其中,yyyy 是用来表示年份的数字,nnn 是 001 到 366 之间的数字,表示该年份中的某一天。
|该函数的结果为日期。如果自变量可以为空,则结果就可以为空;如果自变量为空,则结果为空值。
|其它规则取决于自变量的数据类型:
|示例:
|假定 RECEIVED 列(时间戳记)具有相当于 '1988-12-25-17.12.30.000000' 的内部值。
| DATE(RECEIVED)
| DATE('1988-12-25')
| DATE('25.12.1988')
| DATE(35)
||>>-GRAPHIC--(--graphic-expression--+------------+--)----------->< | '-,--integer-' | |
|模式为 SYSIBM。
|GRAPHIC 函数返回图形字符串类型的 GRAPHIC 表示法或者是日期时间类型的 GRAPHIC 表示法。 |
|该函数的结果为 GRAPHIC。如果自变量可以为空,则结果就可以为空;如果自变量为空,则结果为空值。
|图形的日期时间:
|>>-GRAPHIC--(--datetime-expression--+--------------+--)-------->< | '-,--+-ISO---+-' | +-USA---+ | +-EUR---+ | +-JIS---+ | '-LOCAL-' | ||
|字符串的代码页是应用程序服务器中的数据库的代码页。 |
|>>-TIME--(--表达式--)------------------------------------------>< | |
|模式为 SYSIBM。
|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 的字符串必须是表示有效日期和时间的数字的字符串, |其格式为 yyyyxxddhhmmss,其中 yyyy 是年份、 |xx 是月份、dd 是日、hh 是小时、 |mm 是分钟、ss 是秒。 |
|该函数的结果为时间戳记。如果其中一个自变量可以为空,则结果就可以为空;如果其中一个自变量为空,则结果为空值。
|其它规则取决于是否指定了第二个自变量:
|示例: |
| TIMESTAMP(START_DATE, START_TIME)
|则返回的值将为“1988-12-25-17.12.30.000000”。 |
|Vargraphic 的字符:
|>>-VARGRAPHIC--(--character-string-expression--)--------------->< | |
|Vargraphic 的日期时间:
|>>-VARGRAPHIC--(--datetime-expression--)----------------------->< | |
|Vargraphic 的图形:
|>>-VARGRAPHIC--(--graphic-string-expression--+------------+-----> | '-,--integer-' | |>--)----------------------------------------------------------->< | |
|模式为 SYSIBM。
|VARGRAPHIC 函数返回下列值的图形字符串表示法:
|该函数的结果为变长图形字符串(VARGRAPHIC 数据类型)。如果第一个自变量可以为空,则结果就可以为空;如果第一个自变量为空,则结果为空值。
|Vargraphic 的字符:
|结果的长度属性等于自变量的长度属性。
|让 S 来表示 character-string-expression 的值。 |将 S 中的每个单字节字符转换为其等价的双字节表示法或者转换为结果中的双字节替代字符; |S 中的每个双字节字符都“按现状”映射。如果双字节字符的第一个字节作为 |S 的最后一个字节来出现,则将把它转换为双字节替代字符。保持 S 中的字符的顺序。
|以下是关于转换的其它注意事项。
|Vargraphic 的日期时间
|Vargraphic 的图形:
|如果 graphic-string-expression 的长度大于结果的长度属性,则会执行截断和返回警告(SQLSTATE 01004),除非被截断的字符全部都是空白,并且 graphic-string-expression 不是长字符串(LONG VARGRAPHIC 或 DBCLOB)。