我正在使用一个我是一个卑微的苦工的数据库。我无法对数据库进行更改,我的建议被忽略了。我感兴趣的字段是一个 varchar,它以“MMDDYYHH24MISS”格式捕获时间,但正如我所说,将其作为文本存储在 varchar 字段中。
我的老板想要一份报告,我必须在此字段上使用 between 语句来过滤实际的 DATE 范围。好吧,问题来了,文本将 0000 小时存储为 2400 小时,这确实搞砸了 BETWEEN 子句。不过,我无法更改字段类型。
我已经想出了如何将 24 替换为 00 但如何让它在 SELECT 语句的 WHERE 部分中运行 BETWEEN ?每个人都说“只需将 VARCHAR 字段更改为 DATA 字段”。好吧,我不能——我是一个卑微的苦工。
我将如何运行此代码,然后在 SELECT 的 WHERE 部分的 BETWEEN 语句中运行另一个引用 FIX_DATETIME 的 SELECT 语句?
一位在数据沼泽中涉水的年轻女士,Copra Loom
IE。WHERE to_date(FIX_DATETIME, 'MMDDYYHH24MISS') 在 (sysdate-90) 和 sysdate 之间
这是我的代码:
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