【问题标题】:how to write to query to fetch for particular date and also range of dates如何写入查询以获取特定日期以及日期范围
【发布时间】:2018-06-27 04:25:45
【问题描述】:

audit_modifier 是 VARCHAR2(30 CHAR) 并且 audit_modifier 值以这种格式存储[2018-01-18T17:19:47.285Z]。

然后如何写入查询以获取特定日期和日期范围。

SELECT * FROM TABLE where audit_modifier = '2018-01-18';

收到以下错误消息。

选择 * 从表 WHERE trunc(audit_modifier) BETWEEN TO_DATE('2018-01-16', 'YYYY-MM-DD') AND TO_DATE('2018-01-16', 'YYYY-MM-DD');

ORA-00932:不一致的数据类型:预期 NUMBER 得到 DATE 00932. 00000 - “不一致的数据类型:预期的 %s 得到了 %s” *原因:
*行动: 行错误:10 列:29

【问题讨论】:

  • 如果您无法使用重复的链接解决问题,请在此处留言,然后有人可以为您重新打开问题。
  • 使用上面发布的答案链接编写了上面的查询,但收到错误消息。

标签: sql oracle


【解决方案1】:

此答案假定您将时间戳信息存储为以下格式的文本:

2018-01-18T03:22:48.317Z

您应该将日期信息存储在日期列中,但我们可以解决此问题。我们可以使用TO_TIMESTAMP将此字符串转换为时间戳,然后将其截断为日期:

SELECT *
FROM TABLE
WHERE TRUNC(TO_TIMESTAMP('2018-01-18T03:22:48.317Z',
                         'YYYY-MM-DDTHH24:MI:SS.FFFZ')) =
    TO_DATE('2018-01-18', 'YYYY-MM-DD')

【讨论】:

  • audit_modifier 是 varchar2 列。为什么我们在特定日期执行时没有记录出现?。SELECT * FROM TABLE WHERE audit_modifier = '2018-01-18';;值在 2018 年表中存在这样的值-01-18T03:22:48.317Z 2018-01-18T06:22:34.949Z
  • SELECT * FROM TABLE WHERE SUBSTR(audit_modifier, 1, 10) = '2018-01-18' ... 但不要将您的日期存储为文本。
  • 这是旧表,无法更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 2014-12-06
  • 2021-01-03
  • 1970-01-01
  • 2017-06-05
相关资源
最近更新 更多