请教高人一个SQL查询语句中存在的问题,很简单,却就是搞不懂错误原因,哪位前辈指教一下?
请教高人一个SQL查询语句中存在的问题,很简单,却就是搞不懂错误原因,哪位前辈指教一下?
我用的SQL 2005
数据表中 有个“日期”字段,存储日期格式为:2012-9-1
当我想要查询数据时,
- SQL code
SELECT * FROM [upreport_wl_jg2]where 日期 between '2012-9-1' and '2012-9-9'
发现,他吐出来的结果中并不只是这个范围内的,把所有的九月份的日期都吐出来了,也就是说,超过2012-9-9 日期的数据也出来了。。。为什么呢?
但是当我测试
- SQL code
SELECT * FROM [upreport_wl_jg2]where 日期 between '2012-9-1' and '2012-9-15'
时,发现,它又没吐10号之前的数据,为什么的?
哪位高人指点下 我哪里出问题了呢
[解决办法]
你的“日期”字段是datetime么?
- SQL code
--试试下面的SELECT *FROM [upreport_wl_jg2]where cast(日期 as datetime) between '2012-9-1' and '2012-9-9'
[解决办法]
很大的可能就是 你的日期字段不是datetime 类型的 是个字符串
- SQL code
--trySELECT *FROM [upreport_wl_jg2]where cast(日期 as datetime) between '2012-9-1' and '2012-9-9'
[解决办法]
[解决办法]
- SQL code
SELECT *FROM [upreport_wl_jg2]where convert(char(10),日期 ,120) between '2012-09-01' and '2012-09-09'
[解决办法]
太多了,这里文章,拉到最下面,有各种格式http://blog.csdn.net/dba_huangzj/article/details/7657979