&引用;选择“提取分钟”;在oracle中失败

&引用;选择“提取分钟”;在oracle中失败,oracle,plsql,Oracle,Plsql,请帮我解决这个问题 我需要从表中的小时(“JAM”列)中提取分钟 我尝试了以下查询: WITH recordabsen AS (SELECT userid, TO_CHAR(checktime,'MM/DD/YYYY') AS tanggal , MIN(TO_CHAR(checktime,'hh24:mi')) AS JAM FROM checkinout WHERE USERID = '688' AND (

请帮我解决这个问题

我需要从表中的小时(“JAM”列)中提取分钟

我尝试了以下查询:

WITH recordabsen AS
     (SELECT userid,
          TO_CHAR(checktime,'MM/DD/YYYY')   AS tanggal ,
          MIN(TO_CHAR(checktime,'hh24:mi')) AS JAM
     FROM checkinout
     WHERE USERID = '688'
      AND (checktime BETWEEN to_date('04/01/2013','MM/DD/YYYY') AND to_date('05/01/2013','MM/DD/YYYY'))
      AND checktype = 'I'
     GROUP BY userid,
          TO_CHAR(checktime,'MM/DD/YYYY')
     )
SELECT EXTRACT (MINUTE FROM JAM) AS minute
FROM recordabsen
WHERE to_date(JAM,'hh24:mi') > TRUNC(to_date(JAM,'hh24:mi')) + 8/24
但返回一个错误:


执行以下操作后,提取字段无效:

to_char(checktime,'hh24:mi')
您有一个字符串而不是日期,因此最好使用字符串函数而不是日期函数,即:

substr("JAM", 4)

为什么不通过WITH子句查询传递checktime呢?然后,如果checktime是一个日期,您可以将其转换为时间戳,这将允许您使用EXTRACT MINUTE:

SELECT EXTRACT (MINUTE FROM CAST(SYSDATE AS TIMESTAMP)) FROM dual;

检查SQLFiddle:

EXTRACT对日期时间或间隔表达式有效。JAM是您的应用程序中的字符类型query@Ramblin“很可能,虽然你在做一个假设——人们在日期栏上叫
to_date
(这显然是个坏主意)@JeffreyKemp,但实际上他并不是在做一个假设,见WITH子句:
to_CHAR(checktime,'hh24:mi'))是JAM
啊,对了,连看都没看!