【问题标题】:to_date unable to print timestampto_date 无法打印时间戳
【发布时间】:2011-12-09 23:00:13
【问题描述】:

我想从下面的sql打印时间戳

select to_date('01/01/2011 12:00:00 AM','dd/mm/yyyy hh:mi:ss AM') from dual;

当前输出 --> 1/1/2011(仅在上午 12 点不打印时间戳。如果最小值是 12:01,那么它正在打印。

但我需要输出为1/1/2011 12:00:00 AM

【问题讨论】:

  • 当您说要打印时,您要在哪里打印?这是在报告、网页、sqlplus 中吗?

标签: sql oracle date to-date


【解决方案1】:

TO_DATE 将字符串转换为DATE。 DATE 以非人类可读的压缩二进制格式存储。 Oracle DATE 没有格式。因此,当您要求程序显示日期时,它必须将DATE 转换为字符串。如果您没有通过显式TO_CHAR 明确指定格式,SQL*Plus 之类的工具将使用会话的NLS_DATE_FORMAT 将日期转换为字符串。其他应用程序可能会选择不同的方式将日期转换为字符串——例如,使用客户端的区域设置,或者允许用户配置格式。

如果您想返回代表DATE 的特定格式的字符串,则需要使用显式TO_CHAR。类似的东西

SELECT to_char( some_date_column, 'dd/mm/yyyy hh:mi:ss AM' )
  FROM some_table

在您发布的特定情况下,由于您手中有字符串作为字符串,您只需从 dual 中选择它,而不是执行 TO_DATE 将其转换为日期,然后将其转换为 @987654332 @ 将其转换回字符串。不过,我假设您尝试从中选择的实际表中有一个实际的 DATE。

【讨论】:

    【解决方案2】:

    控制格式的最佳方法是使用to_char 并明确指定所需的日期格式。

    select to_char(to_date('01/01/2011 12:00:00 AM','dd/mm/yyyy hh:mi:ss AM'),'DD/MM/yyyy hh:mi:ss AM') 
      from dual;
    

    【讨论】:

      【解决方案3】:

      你可以使用

      select  Convert(varchar,'01/01/2011 12:00:00 AM',113)
      

      【讨论】:

      • 问题被标记为 Oracle 并且 TO_DATE 是 Oracle 语法。这是一个 SQL Server 解决方案。
      猜你喜欢
      • 2016-08-01
      • 2016-02-25
      • 2016-10-03
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 2014-08-15
      • 2012-04-09
      • 1970-01-01
      相关资源
      最近更新 更多