0

我是 Oracle 的新手,希望有人可以为我澄清这种情况。

我编写了一个非常大的查询,它返回一组日期(Oracle 10g)。

在 SQL Developer 中,这些日期以 DD-MON-YY 格式显示(例如:'12-MAY-12')。SQL Developer 中该字段的数据类型显示它是 Date 类型,并且选中了 Simple 单选按钮。当我在 SQL Developer 中运行此查询时,我得到一个如下所示的日期:

2012 年 5 月 11 日

我在作为 C# Web 服务一部分的程序集中使用此查询。托管 QE 服务器的离岸团队中有人注意到该字段的值正在转换为 IST 偏移量(它已使用 GetXml 为 DataSet 转换为 XML)。问题是,在我在调试器中检查输出之前,我什至不知道偏移量在那里,因为我在 SQL Developer 中看不到它。它是这样过来的:

2012-05-11T06:09:15+05:30

没有使用内在的日期转换功能,只是提取日期的字段名称。

如何修改我的查询,以便在运行查询时不考虑过去的偏移量(我们确实需要保留日期的时间部分)?我知道这个问题听起来很复杂,但最终结果是写入海外另一个数据库的数据包含错误的偏移量,因此它被转换为相差 1 天的日期。

基本上我想要时间而不是偏移量。

4

1 回答 1

1

OracleDATE有日期和时间组件,但没有时区。ATIMESTAMP WITH [LOCAL] TIME ZONE将具有时区,并且还将具有亚秒级精度。

您可以通过几种不同的方式更改DATE数据转换为字符串以进行显示的方式。首先,它使用显式TO_CHAR

SELECT to_char( <<your_date_column>>, 'YYYY-MM-DD HH24:MI:SS' )
  FROM your_table

其次,您可以更改NLS_DATE_FORMAT会话的设置,以便会话始终以特定格式显示数据

ALTER SESSION SET nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
SELECT <<your_date_column>>
  FROM your_table

第三,在 SQL Developer 中,您可以更改它用于显示DATE数据的字符串格式。如果你去Tools | Preferences | Database | NLS,会有一个Date Format领域。如果您将其从 更改DD-MON-RRYYYY-MM-DD HH24:MI:SS,您将获得默认显示的日期和时间。

于 2012-05-14T18:07:43.640 回答