我有一个以下的oracle sql查询,其中START_DATE是一个数字列,a_date是DATE类型,输入值也是DATE类型。请告诉我如何将日期列与输入日期进行比较。
select a.id ,a.v ,b.id,b.v
from DATA a ,FDC b where a.START_DATE = to_date('11-DEC-10','YYYYMMDD')
and a.START_DATE = b.a_date and b.code = 'JFK'
答案 0 :(得分:2)
select a.id ,a.v ,b.id,b.v
from DATA a ,FDC b where a.START_DATE LIKE TO_DATE('11-DEC-10','DD-MON-YY')
and a.START_DATE = b.a_date and b.code = 'JFK'
如果您将START_DATE存储为'YYYYMMDD'
之类的数字:
a.START_DATE=TO_NUMBER(TO_DATE('20101211','YYYYMMDD'))
答案 1 :(得分:0)
这完全取决于您的号码start_date列的存储格式。
但是,如果在真实日期列上使用谓词,并且仅使用格式掩码加入一次,则可能会更容易。
例如:
SELECT a.id,
a.v,
b.id,
b.v
FROM data a,
fdc b
WHERE b.a_date = to_date('11-DEC-2010','DD-MON-RRRR')
AND a.start_date = TO_NUMBER(TO_CHAR(b.a_date, 'DDMMRRRR'))
AND b.code = 'JFK'
请注意,日期格式与您要比较的日期格式相匹配 - b.a_date = to_date('11-DEC-2010','DD-MON-RRRR')
。此查询假定a.start_date列以DDMMRRRR
格式存储。您需要根据日期存储的格式对其进行修改,例如: a.start_date = TO_NUMBER(TO_CHAR(b.a_date, 'J'))
表示朱利安日期。
P.S。为什么要使用数字来存储日期?
答案 2 :(得分:-1)
从tbltlcrconfighistory中选择*,其中TO_DATE(STARTDATE,'dd-mon-yyyy')= TO_DATE('14 -dec-2010','dd-mon-yyyy');
答案 3 :(得分:-1)
从tbltlcrconfighistory中选择*,其中STARTDATE = TO_DATE('14 -dec-2010','dd-mon-yyyy');