Oracle OCIDateTime:获取/设置TZABBREV或同等功能

时间:2018-08-03 17:58:17

标签: oracle oracle11g oci

背景:我正在使用Oracle的本机应用程序中对数据库接口层进行重做,以不执行date-> string-> date往返,以获取时间戳记。但是,与当今大多数应用程序将时区表示为UTC偏移量不同,我正在处理的代码将它们作为表中的索引或其自身定义的字符串名称来处理(尽管我们可以将其转换为Oracle的命名方案) 。我们还自己跟踪DST(而不是简单地存储时区并根据所考虑的时间戳来推断DST)-这对于正确处理在下降时间变化附近发生的事件很有必要。

作为这项工作的一部分,我的研究发现OCIDateTimeGetTimeZoneName用于从TIMESTAMP WITH TIME ZONE描述符获取时区名称。但是,如何从该描述符中获取时区缩写(V $ TIMEZONE_NAMES.TZABBREV)?它包含在OCIDateTimeGetTimeZoneName的输出中吗?这个东西是否藏在OCI的黑暗发霉的角落里?还是仅通过字符串转换才可以通过OCI无法获取缩写?

此外,是否有可能通过名称和缩写来设置 TIMESTAMP WITH TIME ZONE描述符上的时区,还是将OCIDateTimeConstruct上的时区参数限制为字符串格式的偏移量?如果后者是正确的,那么是否仅限于让Oracle在构造OCIDateTime时推断时间是否为DST?

0 个答案:

没有答案