我有以下查询,即使有:
select *
from INTERFACE_RUN
where TO_CHAR(INTERFACE_RUN.START_TIME, 'dd-mon-yy') = '04-MAY-10';
Run Code Online (Sandbox Code Playgroud)
start_time字段是时间戳字段.因此,我使用to_char转换它,并与用户传递的04-MAY-10值进行比较.但它没有获取任何数据.请帮忙.提前致谢
to_char()注意模式的情况.所以,你正在制作`04-may-10',这是不一样的.
所以,试试这个:
where TO_CHAR(INTERFACE_RUN.START_TIME, 'DD-MON-YY') = '04-MAY-10';
Run Code Online (Sandbox Code Playgroud)
那就是说,我更喜欢:
where trunc(INTERFACE_RUN.START_TIME) = date '2010-05-04'
Run Code Online (Sandbox Code Playgroud)
要么:
where INTERFACE_RUN.START_TIME >= date '2010-05-04' AND
INTERFACE_RUN.START_TIME < (date '2010-05-04') + 1
Run Code Online (Sandbox Code Playgroud)
为什么?有两个原因.首先,列是日期,所以我更喜欢日期比较.其次,我更喜欢ANSI/ISO标准日期格式.第二个版本也可以轻松利用START_TIME列上的索引.