4.5.8 DBDATE 环境变量
使用 DBDATE 环境变量可以指定 DATE 值的最终用户格式。
在使用 C shell 的 UNIX™ 系统上,使用以下语法设置 DBDATE。

下列格式化符号在 DBDATE 设置中有效:
- . /
是在日期格式中可作为分隔符存在的字符。
0
指示时间单位之间不显示任何分隔符。
D 和 M
是表示日和月的字符。
Y2 和 Y4
是表示年份和年份精度的字符。
一些东亚语言环境支持基于纪元的日期的附加语法。有关基于纪元的格式的详细信息,
请参阅《GBase 8s GLS 用户指南》。
DBDATE 可指定显示格式的下列属性:
• 日期中时间单位的顺序(月、日和年)
• 年份是以两位数字 (Y2) 还是四位数字 (Y4) 的形式显示
• 月、日和年时间单位之间的分隔符
对于“美国英语”语言环境,DBDATE 的缺省值为 MDY4/,其中 M 表示月,D 表
示日,Y4 表示四位的年份,而斜杠 ( / ) 表示时间单位分隔符(例如,01/08/2011)。
可充当分隔符的其他有效字符包括连字符 ( - )、句点 ( . ) 或零 (0)。要指示没有分隔符,
请使用零。如果尝试指定连字符、句点或零以外的字符作为分隔符,或者未在 DBDATE 规
范中加入任何分隔符,那么缺省情况下会使用斜杠 ( / )。
如果未在客户机上设置 DBDATE,那么数据库服务器上的任何 DBDATE 设置会覆
盖客户机上的 MDY4/ 缺省值。如果在客户机上设置了 DBDATE,那么客户机会使用该值
(而不是数据库服务器上的设置)。
下表显示了有效 DBDATE 设置的一些示例以及它们对应于日期 2011 年 1 月 8 日的
显示:
格式 Y4MD*(因为星号不是有效分隔符)和 MDY4(未定义任何分隔符)都会显示缺省
符号(斜杠)作为分隔符。
要点: 如果使用 Y2 格式,那么 DBCENTURY 环境变量的设置还会影响在数据输入时
对文字 DATE 值求值的方式。
另外,GBase 8s ESQL/C 调用的某些例程可使用 DBTIME 变量(而不是 DBDATE)
来将 DATETIME 格式设置为国际规范。有关更多信息,请参阅 DBTIME 环境变量和
GBase 8s ESQL/C 程序员手册 中对 DBTIME 环境变量的论述。
DBDATE 变量的设置优先于 GL_DATE 环境变量的设置,并且优先于
CLIENT_LOCALE 指定的任何缺省 DATE 格式。有关 GL_DATE 和
CLIENT_LOCALE 的信息,请参阅《GBase 8s GLS 用户指南》。
最终用户格式影响下列上下文:
⚫ 在显示 DATE 值时,GBase 8s 产品使用 DBDATE 环境变量来确定输出的格式。
⚫ 在 DATE 值的数据输入期间,GBase 8s 产品使用 DBDATE 环境变量来解释输入。
例如,如果在 INSERT 语句中指定文字 DATE 值,那么数据库服务器期望此文字值
与 DBDATE 指定的格式兼容。同样,数据库服务器将您指定为 DATE( ) 函数的自变量
的日期解释为 DBDATE 格式。
数据库对象中的 DATE 表达式
当数据库对象中的表达式(包括检查约束、分段存储表达式、SPL 例程、触发器或 UDR)
包含字面日期值时,数据库服务器使用在创建(或上次修改)数据库对象时 DBDATE(或其
他相关环境变量)所具有的设置对表达式求值。如果 DBDATE 已复位为新值,那么对文字
DATE 求值时会忽略该新值。
例如:假如 DBDATE 设置为 MDY2/,用户创建了一个表且 orderdate 列具有以下检查
约束:
orderdate < '06/25/98'
则先前表达式的日期根据定义约束时 DBDATE 的值来进行格式编排。检查约束表达
式解释为 orderdate < '06/25/98',不管对 orderdate 列执行插入或更新操作期间
DBDATE 的值如何。假设当用户将值 '30/01/98' 插入 orderdate 列中时,DBDATE
复位为 DMY2/。插入的日期值使用日期格式 DMY2/,而检查约束表达式使用日期格式
MDY2/。
有关较早版本的 GBase 8s 中始终根据运行时环境求值的旧对象的讨论,请参阅数据
库对象中的缩写年份和表达式。该节描述如何重新定义对象,以便根据定义对象(或上次
修改对象)时生效的环境变量设置解释日期。
要点: GBase 8s 的 DBDATE 的行为与先前版本不兼容。




