SQL日期过滤器

时间:2013-04-24 05:32:06

标签: sql oracle datetime timestamp

我运行以下查询,不知怎的,我觉得结果是错误的。

SQL> select to_char(starttime,'dd-mm-YYYY hh24:mi:ss') 
from report 
where dateofmonth between 
    to_timestamp_tz('22-Apr-2013 12:00:00','dd-mm-YYYY hh24:mi:ss') 
    and to_timestamp_tz ('23-Apr-2013 14:00:00','dd-mm-YYYY hh24:mi:ss');

TO_CHAR(STARTTIME,
--------------------
23-04-2013 22:43:59
23-04-2013 13:43:37

SQL> select to_timestamp_tz(starttime,'dd-mm-YYYY hh24:mi:ss') 
from report 
where dateofmonth between 
    to_timestamp_tz('22-Apr-2013 12:00:00','dd-mm-YYYY hh24:mi:ss') 
    and to_timestamp_tz ('23-Apr-2013 14:00:00','dd-mm-YYYY hh24:mi:ss');

TO_TIMESTAMP_TZ(STARTTIME,'DD-MM-YYYYHH24:MI:SS')
-------------------------------------------------
23-APR-13 10.43.59 PM -07:00
23-APR-13 01.43.37 PM -07:00

我不确定为什么10 PM的时间会出现在结果中。

1 个答案:

答案 0 :(得分:0)

Manjit,

您正在选择starttime列,但where子句具有dateofmonth列。在查询中选择starttime和dateofmonth,并检查它是否给出了正确的结果。