2015-10-09 49 views
0

我有一個名爲RETAILTRANSACTIONTABLE的表,它有一個名爲BUSINESSDATE的列,其格式爲(yyyy-mm-dd)2015-05-22。

我想用batch.StartDateTime的格式(dd-mm-yyyy hh:mm:ss)comapre這個日期05-10-2015 12:09:03。
在c#中通過傳遞sql查詢來比較兩個日期

var dateAndTime = batch.StartDateTime; 
var date = dateAndTime.ToShortDateString(); 
string query = "SELECT COUNT(discamount) AS DISCOUNTCOUNT "+ 
       " FROM ax.RETAILTRANSACTIONTABLE where "+ 
       "(CONVERT(VARCHAR(10),BUSINESSDATE,105) >= '" + date 
       + "') and DISCAMOUNT > 0 

使用上面的查詢給了我所有的專欄中,我只想值大於或等於批日期的計數

+3

您應該參數化您的查詢。 –

+1

「BUSINESSDATE」列的確切數據類型是什麼? – Khonsort

+0

@FelixPamittan你能解釋一下嗎? –

回答

0

可以使用值:

var dateAndTime = batch.StartDateTime; 
var date = dateAndTime.ToShortDateString(); 
string query = "SELECT COUNT(discamount) AS DISCOUNTCOUNT "+ 
      " FROM ax.RETAILTRANSACTIONTABLE "+ 
      " WHERE BUSINESSDATE >= CONVERT(DATE, '" + date + "', 105) 
      and DISCAMOUNT > 0 " 

而且,獎金,如果索引存在,則使用BUSINESSDATE

或@FelixPamittan還好說,用事先準備好的聲明具有約束力:

var dateAndTime = batch.StartDateTime; 
var date = dateAndTime.ToShortDateString(); 
string query = "SELECT COUNT(discamount) AS DISCOUNTCOUNT "+ 
      " FROM ax.RETAILTRANSACTIONTABLE "+ 
      " WHERE BUSINESSDATE >= :theDate 
      and DISCAMOUNT > 0 " 
0

我認爲這會做的伎倆爲您

var dateAndTime = batch.StartDateTime; 
var date = dateAndTime.ToShortDateString(); 
string query = "SELECT COUNT(discamount) AS DISCOUNTCOUNT " + 
       " FROM ax.RETAILTRANSACTIONTABLE WHERE" + 
       "BUSINESSDATE > = (CONVERT(VARCHAR, " + @dateParam + " ,105) >= '" + 
       + "') and DISCAMOUNT > 0 

SqlConnection connection = new SqlConnection(/* connection info */); 
SqlCommand command = new SqlCommand(query, connection); 

command.Parameters.AddWithValue("dateParam", date.ToString("yyyy/mm/dd")); 
0

通過上面的答案我修改了它的幫助並最終得到解決方案

var dateAndTime = batch.StartDateTime; 
var date = dateAndTime.ToString("yyyy-MM-dd"); 
string query = "SELECT COUNT(discamount) AS DISCOUNTCOUNT "+ 
       " FROM ax.RETAILTRANSACTIONTABLE where "+      
       "BUSINESSDATE >= '" + date + "'" + 
       " and DISCAMOUNT > 0 
+2

用格式轉換explicitaly會更好。使用'CONVERT(DATE,'「+ date +」',120)'而不是''「+ date +」'' – Khonsort

+0

但是preparedStatement是最好的;-) – Khonsort