2012-05-17 68 views
3

我想從我的Oracle數據庫選擇數據使用C#日期。但是我總是得到一個空的數據集,雖然相同的查詢字符串中的Oracle SQL Developer工作得很好使用C#選擇oracle日期列

String Query = "Select position_date from position"; 
OracleDataAdapter adapter = new OracleDataAdapter(Query, ocon); 
adapter.Fill(ds, "table"); //where ds is a dataset 
PrintDataSet(ds); 

回報

3/8/2011 12:00:00 AM.... and more 

但是,當我改變我的查詢下面,那麼就沒有輸出!

String Query = "Select position_date from position 
where to_char(position_date, 'mm-dd-yyyy') = '05-17-2012'" 

此查詢在oracle sql developer中正常工作。我也嘗試trunc(sysdate),但似乎沒有工作! :(

+1

有點生鏽,但試試這個 - 「select * from position where position_date = to_date('05 -17-2012','mm-dd-yyyy')」 – glennanthonyb

+0

「2011/3/8」與「05-17-2012」完全不同。對我來說,你沒有得到任何回報是有道理的。你不應該將日期轉換爲字符串,而是將字符串轉換爲日期。使用'position_date = to_date('05 -17-2012','mm-dd-yyyy')'將使Oracle在position_date上使用索引。 –

+0

@horse,可能是這樣,但它不是一個等價的查詢。發佈的查詢應該在2012年5月17日收到所有內容,您的查詢會在5/17/12 *午夜*時收到所有信息。您可能意思是TRUNC(position_date)= to_date('05 -17-2012','mm-dd-yyyy') – DCookie

回答

0

如果你的日期沒有時間成分(如果是這樣的話,然後用check約束保證這一點),那麼:

Select position_date 
from position 
where position_date = date '2012-05-17' 

否則:

Select position_date 
from position 
where position_date >= date '2012-05-17' and 
     position_date < date '2012-05-17' + 1 
+0

String Query =「從position pos選擇position_date,其中pos.position_date> = date'2012-05-17'和pos.position_date

1
select * from position where trunc(position_date) = to_date('05-17-2012', 'mm-dd-yyyy') 

工作。

謝謝。

相關問題