如何使用变量作为其在SQL中转换为字符串的原始值?

时间:2016-08-03 10:08:28

标签: c# sql-server

它是一个变量,从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

1 个答案:

答案 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");