需要在日期之间为以下子字符串编写查询

Need to write a query for the below sub string between the dates

ROW_ID  STATUS      CREATED_DATE
123    PROCESSED    06/01/16 03:17:59 AM - 1-XHV8EV
123    INPROGRESS   06/01/16 03:18:59 AM - 1-XHV8EV
123    INPROGRESS   06/02/16 10:17:59 AM - 1-XHV8EV
123    INPROGRESS   06/02/16 10:18:59 AM - 1-XHV8EV
123    PROCESSED    06/02/16 11:17:59 AM - 1-XHV8EV
123    PROCESSED    06/02/16 11:17:59 AM - 1-XHV8EV

我想检索从 06/01/16 03:1:59 AM 到 06/02/16 11:17:59 AM

之间的所有记录

输出应该是这样的

输出:

ROW_ID  STATUS      CREATED_DATE
123     INPROGRESS  06/01/16 03:18:59 AM - 1-XHV8EV
123     INPROGRESS  06/02/16 10:17:59 AM - 1-XHV8EV
123     INPROGRESS  06/02/16 10:18:59 AM - 1-XHV8EV

我想检索从 06/01/16 03:1:59 AM 到 123 PROCESSED 06/02/16 11:17:59 AM

之间的所有记录

“-1-XHV8EV”是数据的一部分吗?如果是这样,你将不得不做一些花哨的 SQL 语句来去除它。

它会像

CAST (LEFT(CREATED_DATE,20) as DATE)

这应该会给你一个 CASTed 日期来处理。然后你可以 运行 在

之间
WHERE  CAST (LEFT(CREATED_DATE,20) as DATE) between someDate and someOtherDate 

Oracle 设置:

CREATE TABLE table_name ( ROW_ID, STATUS, CREATED_DATE ) AS
SELECT 123, 'PROCESSED',  '06/01/16 03:17:59 AM - 1-XHV8EV' FROM DUAL UNION ALL
SELECT 123, 'INPROGRESS', '06/01/16 03:18:59 AM - 1-XHV8EV' FROM DUAL UNION ALL
SELECT 123, 'INPROGRESS', '06/02/16 10:17:59 AM - 1-XHV8EV' FROM DUAL UNION ALL
SELECT 123, 'INPROGRESS', '06/02/16 10:18:59 AM - 1-XHV8EV' FROM DUAL UNION ALL
SELECT 123, 'PROCESSED',  '06/02/16 11:17:59 AM - 1-XHV8EV' FROM DUAL UNION ALL
SELECT 123, 'PROCESSED',  '06/02/16 11:17:59 AM - 1-XHV8EV' FROM DUAL;

查询:

SELECT *
FROM   table_name
WHERE  TO_DATE( SUBSTR( created_date, 1, 20 ), 'MM/DD/YY HH12:MI:SS AM' )
       BETWEEN TIMESTAMP '2016-06-01 03:18:59'
       AND     TIMESTAMP '2016-06-02 11:17:00';

输出:

    ROW_ID STATUS     CREATED_DATE                  
---------- ---------- -------------------------------
       123 INPROGRESS 06/01/16 03:18:59 AM - 1-XHV8EV 
       123 INPROGRESS 06/02/16 10:17:59 AM - 1-XHV8EV 
       123 INPROGRESS 06/02/16 10:18:59 AM - 1-XHV8EV 
  1. 在 created_date 列上应用任何函数将停止在您的 SQL 中使用该列上的任何索引。请检查是否可以将基于函数的索引应用于 created_date 列。
  2. 另外,请确保您始终以准确的格式填充日期字符串,以便从 created_date 中提取日期。该格式的任何更改都会导致应用程序出错。即使您在代码级别修复此类问题,基于函数的索引也会变得多余。

总而言之,这些修复是临时的。此问题的永久修复仅适用于 table 设计。如果这是一项重大工作,请尝试制定一个计划,将其分解为多个较小的任务,并逐步更改逻辑上依赖的对象,最终一劳永逸地解决这个问题。

祝你好运。