引言:
公司的积分项目的一张表的日期字段是字符串的类型,我需要从库里查出属于一个时间段内容的数据,对字符串的日期需要转换成DateTime类型然后做比较,如何在sql语句里进行查询,小编费了一番功夫。请看下文
过程:
第一种:
SELECT CONVERT(varchar(100), GETDATE(), 0) 07 15 2009 4:06PM
SELECT CONVERT(varchar(100), GETDATE(), 1) 07/15/09
SELECT CONVERT(varchar(100), GETDATE(), 2) 09.07.15
SELECT CONVERT(varchar(100), GETDATE(), 3) 15/07/09
SELECT CONVERT(varchar(100), GETDATE(), 4) 15.07.09
SELECT CONVERT(varchar(100), GETDATE(), 5) 15-07-09
网上好多人用这种方式进行转换,不过应用到我的项目中查不到数据,不知道为什么,可能我还有理解不到位的地方,参考博客:Sql 中常用日期转换Convert(Datetime)
紧接着查询了第二种方法:
查到这种用法:
SELECT CAST('2011-07-11' AS DateTime) --输出 2011-07-11 00:00:00.000
这种方式应用到项目中可以实现,但是select cast的用法没有select convert的样式多。
实际应用:
string str = "select * from t_accumulate,t_department,t_user where t_accumulate.departmentID=t_department.departmentID and t_accumulate.userID=t_user.userID and t_department.departmentID like concat('%',@departmentID,'%') and t_accumulate.accumulateStates like concat('%',@state,'%') and (select cast(t_accumulate.date as datetime)) BETWEEN (select cast(@startDate as datetime)) and(select cast(@endDate as datetime))";
MySqlParameter[] pars = new MySqlParameter[]
{
new MySqlParameter("@departmentID",departmentID),
new MySqlParameter("@state",state),
new MySqlParameter("@startDate",startDate),
new MySqlParameter("@endDate",endDate)
};
这个sql语句主要设计到了三张表联查加两个模糊查询,最后那块是日期的转换。
总结:
如果需要这种的转换的话,希望有所帮助,后期会详细介绍这两种方法的区别。