它是一个从类型date转换为字符串的变量。但是,我想在天选择使用它。如何使用变量作为它的原始值,它被转换为SQL中的字符串?
SELECT t1, t2,CONVERT(varchar(10), mydate, 105) [mydate] FROM tableName
WHERE [mydate] BETWEEN @dateStart AND @dateEnd
ORDER BY mydate //error
在上述的SQL查询,@dateStart
和@dateEnd
是字符串类型的在C#(出头如 “26/07/2016”),但它并不重要。
问题是如何编写一个sql查询,它将返回字符串类型的mydate,但也会在其日期类型中进行计算。
[更新1]
我的测试案例。
startDayStr = DateTime.Now.ToString("yyyyMMdd");
endDayStr = DateTime.Now.Year.ToString() + "0101";
SqlCommand com = new SqlCommand("SELECT t1, t2,CONVERT(varchar(10), mydate, 105) [mydate] FROM tableName
WHERE [mydate] BETWEEN @dateStart AND @dateEnd
ORDER BY mydate //error", con);
com.Parameters.AddWithValue("@dateStart", startDayStr);
com.Parameters.AddWithValue("@dateEnd", endDayStr);
// not thing selected
使用别名不是在'where'条款中得到支持。只需在'order by'中再次写下它即可。 –
我会将@dateStart替换为“28/01/2016” –
@kingyau - 您可以添加您收到的错误吗? –