SQL 时间段查询

来源:百度知道 编辑:UC知道 时间:2024/05/12 20:06:16
原表中的时间字段是nvarchar类型的,格式为2009年4月7日16:44

"select * from 表 where 日期 between '"+time1+"' and '"+time2+"'"

运行后如我查询4月1日 到 4月9日 结果正确
但如果是4月1日 到 4月10日 结果就不正确了表中的4月7日比4月10日还大,尝试CONVERT(varchar(100), 日期, 23)等转换类型后还是不能正确运行

请帮忙解决下问题为谢
程序是别人做的,我想补充一些功能。如果改成datetime类型可能别的地方会出现更多问题,不好检查

终于解决了 CAST(Replace(Replace(Replace(日期,'年','-'),'月','-'),'日',' ') as datetime)
因为不好改字段类型就只有换下了,还是谢谢0零零柒的启发

select * from 表 where substring(日期,6,1)=4 and substring(日期,8,1)>1 and substring(日期,8,1)<9 and substring(日期,9,1)<='日'

时间字段已经是nvarchar了 ,改成CONVERT(varchar(100), 日期, 23)不是一样的。如果格式为2009-4-7 16:44 的还好一点。干嘛不用datetime类型的。

SQL日期转换详解:http://hi.baidu.com/activezfj/blog/item/9eb4da16c1f4e11d962b43cc.html