&引用;选择“提取分钟”;在oracle中失败
请帮我解决这个问题 我需要从表中的小时(“JAM”列)中提取分钟 我尝试了以下查询:&引用;选择“提取分钟”;在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 (
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
啊,对了,连看都没看!