我正在运行以下查询:
select *
from myTable
where TO_CHAR(TO_DATE( transdate,'DD-MM-YY'),'MM/DD/YYYY')) Between
TO_CHAR(TO_DATE('01-01-13','DD-MM-YY'),'MM/DD/YYYY')) AND
TO_CHAR(TO_DATE('10-07-13','DD-MM-YY'),'MM/DD/YYYY'))
没有从db获取任何记录。
任何想法我做错了什么?
transdate
的格式为'dd-mm-yy'
。
我根据日期范围生成结果的查询返回null。有什么想法吗?
答案 0 :(得分:4)
您可以使用正确的日期格式将日期比较为字符串来解决您的问题:
select *
from myTable
where TO_CHAR(TO_DATE( transdate,'DD-MM-YY'), 'YYYY-MM-DD')) Between
TO_CHAR(TO_DATE('01-01-13','DD-MM-YY'), 'YYYY-MM-DD')) AND
TO_CHAR(TO_DATE('10-07-13','DD-MM-YY'), 'YYYY-MM-DD'));
但你真的应该这样做:
select *
from myTable
where trunc(transdate) between to_date('2013-01-01', 'YYYY-MM-DD') and to_date('2013-07-10', 'YYYY-MM-DD');
或者,更好的是:
select *
from myTable
where transdate >= to_date('2013-01-01', 'YYYY-MM-DD') and
transdate < to_date('2013-07-11', 'YYYY-MM-DD');