【问题标题】:Oracle - How to Convert VARCHAR to DATETIME formatOracle - 如何将 VARCHAR 转换为 DATETIME 格式
【发布时间】:2013-02-19 06:23:00
【问题描述】:

我正在使用Oracle10g 数据库,其中一个表包含一个具有Date 数据类型的列。我正在使用以下查询来获取记录:

 select to_char(START_TIME, 'YYMMDD HH24:MI:SS') from table;

所以从上面的查询中,结果将是VARCHAR 类型。我尝试了to_Date() 方法,但结果只显示DATE。我可以将VARCHAR 转换为DATETIME 格式吗?结果应为DATETIME 类型。请帮我解决这个问题。

【问题讨论】:

  • 由于您所说的问题是将字符串转换为日期(在 Oracle 中与日期时间相同),您需要向我们展示原始数据的样本和您正在使用的格式掩码。除非您不希望我们解决您的问题。

标签: oracle date datetime oracle10g


【解决方案1】:

Oracle date 包含日期和时间,因此您可以将其视为 datetime(Oracle 中没有 datetime 的数据类型)。当您选择它时如何显示完全取决于您的客户。默认显示设置由NLS_DATE_FORMAT 参数控制。如果您只是在 pl/sql 块中使用日期,那么只需将其分配给 date 数据类型并选择不带 to_char 的变量,它就可以正常工作并包含表中存在的任何时间组件。

控制显示,例如使用nls_date_format:

SQL> select a from datetest;
A
---------
19-FEB-13

SQL> alter session set nls_date_format='YYMMDD HH24:MI:SS';

Session altered.

SQL> select a from datetest;
A
---------------
130219 07:59:38

但同样,这只是为了展示。

【讨论】:

  • @Avadhani - “它不起作用”非常无用。什么不起作用 - 你得到不同的格式或错误?你是在做 DazzaL 展示的还是你自己的变体?
  • @AlexPoole 正如回答者在答案末尾所说的那样-“但同样,这仅用于显示”。我正在处理 BIRT 报告,我想在 IDE 中使用查询,结果列将用于设计报告。你能那样帮忙吗....????
  • @Avadhani - DazzaL 说始终将它们视为日期。您可能需要更改 IDE 中的默认日期显示格式,以便它显示时间部分 - 它可以通过某种方式设置 NLS_DATE_FORMAT。不过,我不清楚这将如何反馈到报告中。
  • @Avadhani 我不使用 eclipse/BIRT 但也许这个链接有用? birtworld.blogspot.co.uk/2011/02/…
【解决方案2】:

Oracle 的 Date 类型字段包含日期/时间值,因此将其转换为 Datetime 没有任何意义(它已经是日期时间)

阅读有关 oracle 日期类型的更多信息here

【讨论】:

    【解决方案3】:

    是的,Date 数据类型将满足您的需求,但您每次都必须跳过一些环节才能从中获得准确的时间。绝对使用 Timestamp 数据类型。

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      相关资源
      最近更新 更多