0

请帮我解决这个问题。

我需要从表中的小时(“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

但返回错误:

无效的提取字段

4

2 回答 2

0

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

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

查看 SQLFiddle:http ://www.sqlfiddle.com/#!4/d41d8/18054

于 2013-10-03T06:54:29.740 回答
0

完成后:

to_char(checktime,'hh24:mi')

你得到一个字符串而不是日期,所以也许最好使用字符串函数而不是日期函数,即:

substr("JAM", 4)

这是一个 sqlfiddle 演示

于 2013-10-03T03:57:23.553 回答