我有一个名为RETAILTRANSACTIONTABLE的表,其中有一个名为BUSINESSDATE的列,其格式为日期(yyyy-mm-dd)2015-05-22。
我想用batch.StartDateTime格式(dd-mm-yyyy hh:mm:ss)05-10-2015 12:09:03来扼制这个日期。
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
使用上面的查询给出了列的所有值我只想要大于或等于批日期的值的数量
答案 0 :(得分: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 "
答案 1 :(得分: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"));
答案 2 :(得分: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