【问题标题】:Show date with time when querying oracle DATE data type [duplicate]查询oracle DATE数据类型时显示日期和时间[重复]
【发布时间】:2016-06-01 13:36:52
【问题描述】:

查询 oracle 日期时,我只看到日期,而不是时间。示例

select D from ALIK_TZ

结果:

D
01-JUN-16

我怎么也能看到时间?

【问题讨论】:

  • 仅仅因为 TOAD/SQLDeveloper/Whatever 仅显示日期部分并没有多大意义。当数据返回到应用程序时,它不是字符串,而是二进制 DATETIME 字段。您的应用程序应该格式化该数据类型,以便以适合您需要的任何方式显示。它不应该由数据库完成。否则,您已将表示层耦合到数据层。

标签: sql oracle date datetime-format


【解决方案1】:

TO_CHAR 与时间格式一起使用。下面的例子。

考虑将日期保存在名为D 的列中,而不是以下查询也会得到时间:

select to_char(D, 'DD-MON-YYYY HH24:MI:SS') D_TIME, D from ALIK_TZ;

结果:

D_TIME                  D
01-JUN-2016 06:14:04    01-JUN-16

【讨论】:

  • 日期没有格式 - 它们在内部由 7 or 8 bytes 表示,并且 always 有一个时间组件。日期的显示由您用于访问数据库的客户端程序处理,并且将根据客户端程序中的设置进行格式化,或者如果客户端程序从数据库中获取此参数,则由 Oracle 的 NLS_DATE_FORMAT 会话进行格式化范围。这个答案的作用是将日期转换为格式化的字符串,并且不返回客户端可以格式化的日期。
【解决方案2】:

既然你自己回答了。只是为了添加您以 DD-MON-YY 格式获得结果的原因。 Oracle docs 说:

对于日期的输入和输出,标准的 Oracle 日期格式是 DD-MON-YY

还请注意,Oracle 在显示 DATE 值时在内部使用 TO_CHAR 函数,Oracle 将使用默认的 DATE 格式自动调用 TO_CHAR,即 DD-MON-YY。。 p>

因此您需要使用TO_CHAR 函数对其进行更改,以获取所需格式的日期。

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2014-06-30
    • 1970-01-01
    • 2019-06-16
    相关资源
    最近更新 更多