【问题标题】:Return an oracle column as timestamp返回一个 oracle 列作为时间戳
【发布时间】:2014-11-25 13:01:19
【问题描述】:

我正在使用 sql 表中的数据进行冷融合,并使用查询查询将 sql 数据连接到 oracle 数据库中的某些数据。不幸的是,我需要按日期对它们进行排序,并且 oracle 表有两列 - DRWR_DATE 是 DATE 类型,TIME 是 VARCHAR2 类型。将两列放入一个字符串中,读取17-JUN-03 16:35:18 或类似的东西。我需要将这两列作为 TIMESTAMP 返回,以便我可以使用查询查询对它们进行排序。

另外,我想我读到日期列在 Oracle 中保存时间?我对 Oracle 没有太多经验,所以我不确定如何最好地做到这一点。

【问题讨论】:

    标签: sql oracle coldfusion


    【解决方案1】:

    试试这个:

    SELECT  to_timestamp(
                  to_char( drwr_date,'dd-mon-yy') ||' '|| time
                  , 'dd-mon-yy hh24:mi:ss'
            ) 
    FROM   your_table
    

    【讨论】:

      【解决方案2】:

      尝试使用TO_TIMESTAMP函数:

      SELECT TO_TIMESTAMP('17-JUN-03 16:35:18', 'DD-MON-RR HH24:MI:SS') 
        FROM DUAL;
      

      【讨论】:

      • 这确实有效,我完全被 DATE 列类型所迷惑。它还必须存储时间吗? DATE和sql DATETIME一样吗?
      • 如果其中一列是日期而另一列是 varchar,这有什么帮助?
      • @PatrickSchomburg 在这里问这个问题不要让自己感到困惑。阅读 Oracle 文档:docs.oracle.com/cd/B28359_01/server.111/b28318/…
      • 日期仍然存储时间。即使您的问题并不真正需要,但要记住的是您可以截断日期。从 YOUR_TABLE 中选择 TRUNC(drwr_date);只是要记住一些可能的未来日期比较,因为忘记时间在那里可能会给一些人造成一些混乱。
      【解决方案3】:

      您可以尝试将列转换为日期,如下所示:

      TO_DATE(column,'DD-MON-YY HH24:MI:SS')
      

      第一个参数获取您的列,第二个参数指定使用的日期格式

      【讨论】:

      • 该列已经是日期...如何将其转换为日期?
      • 他说该列是一个DATE列和一个VARCHAR列的组合,所以我猜这个组合是一个VARCHAR
      【解决方案4】:

      如果您只需要按日期排序,那么您只需要一个 order by 子句。

      order by drwr_date, time
      

      您不必将这些转换为任何东西,除非您出于其他原因需要这样做。请记住,日期数据类型本质上是一个浮点数。这个,“17-JUN-03”就是您的客户显示它的方式。

      【讨论】:

      • 数据来自 sql 和 oracle,是coldfusion 抛出的错误——所以可能是我的问题是coldfusion 特有的。
      • 您知道,“sql”一词在您尝试使用它的上下文中是模棱两可的。从技术上讲,它是一种编程语言,而不是数据库引擎。那些试图用它来指定数据库引擎的人可能意味着 sql server、mysql 或 postgresql。
      • 是的,我想我只是习惯将 Microsoft SQL Server 称为 sql
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2014-01-05
      • 2020-03-21
      • 1970-01-01
      相关资源
      最近更新 更多