它是一个变量,从date类型转换为string。但是,我希望在WHERE选择中使用它几天。
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#中的类型为string(类似于“26/07/2016”),但并不重要。
问题是如何编写一个sql查询,它将返回string类型的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
答案 0 :(得分:1)
SELECT t1, t2,CONVERT(varchar(10), mydate, 105) [mydate] FROM tableName
WHERE mydate BETWEEN cast(@dateStart as date) AND cast(@dateEnd as date)
ORDER BY mydate
使用上述查询并以'yyyyMMdd'格式传递@dateStart
和@dateEnd
使用以下代码将日期转换为格式'yyyyMMdd'
string datestart = DateTime.ParseExact(userDateInput, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyyMMdd");