Sql 不,我不能换场地

Sql 不,我不能换场地,sql,oracle,where,Sql,Oracle,Where,我在一个数据库工作,我是一个卑微的牡丹。我无法对数据库进行更改,我的建议被完全忽略。我感兴趣的字段是一个varchar,它以“mmddyyh24miss”格式捕获时间,但正如我所说的,它以文本形式存储在varchar字段中 我的老板想要一份报告,我必须在此字段上使用BEVER语句来过滤实际的日期范围。好吧,问题是,文本将0000小时存储为2400小时,这真的把BETWEEN子句搞砸了。但是,我无法更改字段类型 我已经知道了如何替换24到00,但是如何让它在SELECT语句的WHERE部分中运行?

我在一个数据库工作,我是一个卑微的牡丹。我无法对数据库进行更改,我的建议被完全忽略。我感兴趣的字段是一个varchar,它以“mmddyyh24miss”格式捕获时间,但正如我所说的,它以文本形式存储在varchar字段中

我的老板想要一份报告,我必须在此字段上使用BEVER语句来过滤实际的日期范围。好吧,问题是,文本将0000小时存储为2400小时,这真的把BETWEEN子句搞砸了。但是,我无法更改字段类型

我已经知道了如何替换24到00,但是如何让它在SELECT语句的WHERE部分中运行?每个人都说“只要把VARCHAR字段改成数据字段就行了。”但是,我不能——我是个卑微的人

如何运行这段代码,然后在SELECT的WHERE部分的BEVER语句中运行另一条SELECT语句,引用FIX_DATETIME

一位年轻女士涉水于数据的沼泽, 椰子织机

也就是说,在sysdate-90和sysdate之间的“mmddyyyh24miss”之间的“dateFIX”和“DATETIME”的位置

这是我的密码:

SELECT MOPACTIVITY.MOPID,
    (CASE 
        WHEN SUBSTR(MOPACTIVITY.MOPID, 7, 2) = '24' THEN SUBSTR(MOPACTIVITY.MOPID, 1, 2)||SUBSTR(MOPACTIVITY.MOPID, 3, 2)||SUBSTR(MOPACTIVITY.MOPID, 5, 2)||'00'||SUBSTR(MOPACTIVITY.MOPID, 9, 2)||SUBSTR(MOPACTIVITY.MOPID, 11, 2)
        ELSE MOPACTIVITY.MOPID
    END ) FIX_DATETIME,
sysdate "SYSDATE"
FROM MOPUSER.MOPACTIVITY

这将使24小时变为00小时:

SUBSTR(FIX_DATETIME,1,6) 
   || REPLACE(SUBSTR(FIX_DATETIME,7,2),'24','00') 
   || SUBSTR(FIX_DATETIME,9,4)
那么您的中间测试是:

WHERE to_date (SUBSTR(FIX_DATETIME,1,6) 
                  || REPLACE(SUBSTR(FIX_DATETIME,7,2),'24','00') 
                  || SUBSTR(FIX_DATETIME,9,4),
              'MMDDYYHH24MISS') BETWEEN (sysdate-90) and sysdate

这将使24小时变为00小时:

SUBSTR(FIX_DATETIME,1,6) 
   || REPLACE(SUBSTR(FIX_DATETIME,7,2),'24','00') 
   || SUBSTR(FIX_DATETIME,9,4)
那么您的中间测试是:

WHERE to_date (SUBSTR(FIX_DATETIME,1,6) 
                  || REPLACE(SUBSTR(FIX_DATETIME,7,2),'24','00') 
                  || SUBSTR(FIX_DATETIME,9,4),
              'MMDDYYHH24MISS') BETWEEN (sysdate-90) and sysdate

我采用的解决方案是创建一个字段,去掉24,并用00替换它们。将表从SQuirreL中运行到TEMP表中,并从我的临时表中运行中间值。这就是我所得到的:/

XOXO

椰子


我采用的解决方案是创建一个字段,去掉24,并用00替换它们。将表从SQuirreL中运行到TEMP表中,并从我的临时表中运行中间值。这就是我所得到的:/

XOXO

椰子


听起来比Tony的解决方案更复杂、更慢。你至少可以有一个基于最新表达式的函数索引,这样可以加快速度。如果你可以创建一个临时表,你不能也创建一个视图吗?听起来比Tony的解决方案更复杂、更慢。你至少可以有一个基于最新表达式的函数索引,这样可以加快速度。如果你可以创建一个临时表,你不能也创建一个视图吗?