【问题标题】:How to select date from timestamp column in Oracle SQL Developer?如何从 Oracle SQL Developer 中的时间戳列中选择日期?
【发布时间】:2021-10-31 20:18:42
【问题描述】:

我在 Oracle SQL Developer 中有如下表:

col1
--------
2019-11-29 11:14:00.821822
2020-02-11 09:14:00.821847

我只想选择日期为“2019-11-29”的行,我该怎么做?

【问题讨论】:

  • 首先,您需要知道该列的数据类型。如果设计得当,它将是 DATE 或 TIMESTAMP。两者都是内部的二进制结构,没有人类可识别的格式,您在屏幕上看到的是客户端程序(在您的情况下为 SQL Dev)应用 TO_CHAR 函数将内部结构转换为可识别字符串的结果。您可以在 SQL 语言参考手册 (docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/…) 中查找 TO_CHAR(和 TO_DATE)

标签: sql oracle date timestamp


【解决方案1】:

你可以使用:

where trunc(col1) = date '2019-11-29'

但是,这不能使用col1 上的索引。因此,通常最好使用:

where col1 >= date '2019-11-29' and
      col1 < date '2019-11-30'

【讨论】:

    【解决方案2】:

    您可以使用to_date()to_char() 函数。 Oracle/PLSQL TO_DATE 函数将字符串转换为日期,TO_CHAR 函数将日期转换为字符串。 TRUNC(date) 函数返回不带时间部分的日期。

    select *
    from myTable    
    where trunc(col1) = to_date('2019-11-29', 'yyyy-mm-dd');
    

    或:

    select *
    from myTable    
    where to_char(col1, 'yyyy-mm-dd') = '2019-11-29'
    

    【讨论】:

    • 就 to_date 而言我有错误:'Wrong arguments col1 ...'。在 to_char 方面我有错误:'Invalid function to_char',我该怎么办???
    • 你确定 Col1 有日期数据类型吗?
    • 我不确定,我只知道 col1 有以下格式的值:2019-11-29 11:14:00.821822
    • 你应该确定。 col1 可以是 Varchar、Timestamp 或 Date。
    • 我查了,col1是时间戳
    猜你喜欢
    • 1970-01-01
    • 2015-05-14
    • 2011-11-16
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2022-12-08
    相关资源
    最近更新 更多