2012-11-20 75 views
0
SQL

可能重複:差異。日期之間 - 加上


DateDiff Function

我試圖找到在SQL日期之間的差值。提供查詢時,必須顯示天數的差異。我得到一個錯誤,說DATEDIFF是一個無效的標識符。有任何想法嗎?

下面是表: -

Create table auctions(
item varchar2(50), 
datebought date, 
datesold date, 
days number 
); 

Insert into auctions values (‘Radio’,’12-MAY-2001’,’21-MAY-2001’); 

Select item,datebought,datesold,DATEDIFF(dd ,datebought,datesold)」days」 
from auctions; 
+1

@nidhin_toms我認爲你輸入了錯誤的數據類型和單引號,並且在插入語句 – SRIRAM

+0

中錯過了列名,如果你正在計算天數,你是否需要將它作爲拍賣表中的列? (可能你使用它來做其他事情,在這種情況下忽略此評論)。 – Greg

+0

@Nidhin_toms - 當你用'sql'問題包含數據庫供應商和版本時,你會得到更準確的答案。由於標題和數據類型提示'oracle',我修改了問題標籤。如果這不正確,請更新它們。 – Leigh

回答

1

試試這個,它的工作對我來說

Create table auctions(
    item varchar(50), 
    datebought date, 
    datesold date, 
    days int 
    ) 

Insert into auctions(item,datebought,datesold) 
    values ('Radio','12-MAY-2001','21-MAY-2001') 

Select item,datebought,datesold,DATEDIFF(dd ,datebought,datesold)as days 
    from auctions; 
1

在規範化的數據庫設計,你不會要定義其值可以是表列從一個或多個其他列計算。您最好定義SELECT或VIEW中的日期。


如果您正在使用DB2,你可以計算出日舉行DAYS(DATESOLD) - DAYS(DATEBOUGHT)

2

問題的標題包括「SQL加」,這意味着甲骨文給我。

Oracle沒有DATEDIFF函數。使用Oracle確定兩個日期之間天數的最簡單方法是從另一個日期中減去一個日期。

Select item, datebought, datesold, datesold-datebought as days from auctions; 

Oracle將日期和時間信息存儲在日期字段中。如果您不關心時間,通常的做法是在日期字段中將截至午夜的日期存儲在Oracle中。

如果您的日期已被截斷到午夜,那麼計算出的值將是一個整數。

但是,如果您的存儲日期包含時間信息,那麼您可能需要截斷該值以獲取整數值。我懷疑你會想要在減法之前截斷每個日期,例如如果在一天內購買,那麼第二天的任何時間都會計爲1天。 Oracle將日期截斷爲午夜。

select item, datebought, datesold, trunc(datesold)-trunc(datebought) as days from auctions; 

我同意WarrenT的看法,即你的表不應該有非規範日期列。