2010-12-14 101 views
0

我有一個如下的oracle sql查詢,其中START_DATE是一個數字列,a_date是DATE類型,輸入值也是DATE類型。請讓我知道如何比較日期欄和輸入日期。在比較日期列時oracle sql查詢錯誤

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

你得到了什麼「錯誤」? – Nivas 2010-12-14 08:00:23

+2

這裏最明顯的問題是「如何在數字列中存儲日期」?您需要說明該號碼的格式,因此我們可以告訴您如何將其轉換爲日期... – ObiWanKenobi 2010-12-14 08:57:55

回答

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')) 
+0

@Mohamed a.START_DATE是數字類型,b.a_date是日期類型。 – 2010-12-14 06:11:16

+0

它如何存儲號碼? DDMMYYY? – 2010-12-14 06:14:26

+0

@Mohamed他們已將其存儲爲START_DATE的號碼。 – 2010-12-14 06:23:59

-1

SELECT * FROM tbltlcrconfighistory其中TO_DATE(STARTDATE, 'DD-MON-YYYY')= TO_DATE('14 - 癸2010' , 'DD-MON-YYYY');

+0

您不能像TO_DATE(STARTDATE,'dd-mon-yyyy')那樣轉換數字。在StartDate中可能沒有「 - 」連字符。 – 2010-12-14 07:06:59

-1

select * from tbltlcrconfighistory where STARTDATE = TO_DATE('14 -dec-2010','dd-mon-yyyy');

+0

這是工作,如果你的日期格式的start_date字段。 – vanita 2010-12-14 08:46:01

0

這完全取決於什麼格式的號碼起始日期列存儲。

但是,它可能會更容易些,如果你用在真正的日期列的謂詞,並使用格式掩碼只是一次加入。

例如:

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')) Julian日期。

P.s.爲什麼使用數字來存儲日期?

+0

您可能不想在日期格式中使用MON。 – 2010-12-14 09:16:48

+0

已編輯。謝謝。 – 2010-12-14 09:45:51