Sql 选择时间小于或等于“12:00”的日期

Sql 选择时间小于或等于“12:00”的日期,sql,oracle,select,Sql,Oracle,Select,我需要一个查询来选择时间小于或等于12:00的行 我有这样的想法: SELECT daterow FROM datecolumn WHERE daterow <= TO_DATE('12:00, HH24:MI') 我如何获取所有时间少于中午12:00的行?试试这个 SELECT daterow FROM datecolumn WHERE daterow <= TO_DATE('12:00', 'HH24:MI'); 要选择daterow列值的时间部分小于或等于中午12:00的所

我需要一个查询来选择时间小于或等于12:00的行 我有这样的想法:

SELECT daterow FROM datecolumn WHERE daterow <= TO_DATE('12:00, HH24:MI')
我如何获取所有时间少于中午12:00的行?

试试这个

SELECT daterow FROM datecolumn WHERE daterow <= TO_DATE('12:00', 'HH24:MI');

要选择daterow列值的时间部分小于或等于中午12:00的所有行,您可以使用to_char函数提取小时和分钟,并使用to_number将其转换为数字以供进一步比较:

 -- sample of data. Just for the sake of demonstration
SQL> with t1(col) as(
  2    select sysdate - to_dsinterval('P0DT3H')  from dual union all
  3    select sysdate - to_dsinterval('P0DT2H')  from dual union all
  4    select sysdate - to_dsinterval('P0DT1H')  from dual union all
  5    select sysdate + to_dsinterval('P0DT3H')  from dual union all
  6    select sysdate + to_dsinterval('-P2DT0H') from dual
  7  )
  8  select to_char(col, 'dd.mm.yyyy hh24:mi:ss') as res
  9    from t1 t
 10  where to_number(to_char(col, 'hh24mi')) <= 1200
 11  ;
抱歉,请尝试以下操作:

    SELECT daterow FROM datecolumn
 WHERE TO_DATE(daterow,'HH24:MI') <= TO_DATE('12:00', 'HH24:MI');

我很惊讶,3个小时前我怎么没看到?该死的。谢谢Dba-.-@balls,不客气To_Date'12:00 hh24:mi'返回的日期部分将是本月的第一天-2013年8月1日12:00:00,如果daterow有一个值,比如说2013年8月2日09:00:00,条件daterow Yep,似乎此解决方案不起作用,感谢您指出Nicholas。工作完美!:b谢谢
RES
-------------------
26.08.2013 08:10:59
26.08.2013 09:10:59
26.08.2013 10:10:59
24.08.2013 11:10:59
SELECT
  extract(hour FROM cast(A AS TIMESTAMP)) AS h,
  extract(MINUTE FROM cast(A AS TIMESTAMP)) AS m
FROM
  DEMO
;
    SELECT daterow FROM datecolumn
 WHERE TO_DATE(daterow,'HH24:MI') <= TO_DATE('12:00', 'HH24:MI');