请教高人一个SQL查询语句中存在的问题,很简单,却就是搞不懂错误原因,哪位前辈指教一下?
请教高人一个SQL查询语句中存在的问题,很简单,却就是搞不懂错误原因,哪位前辈指教一下?
我用的SQL 2005
数据表中 有个“日期”字段,存储日期格式为:2012-9-1
当我想要查询数据时,
SELECT *
FROM [upreport_wl_jg2]
where 日期 between '2012-9-1' and '2012-9-9'
发现,他吐出来的结果中并不只是这个范围内的,把所有的九月份的日期都吐出来了,也就是说,超过2012-9-9 日期的数据也出来了。。。为什么呢?
但是当我测试
SELECT *
FROM [upreport_wl_jg2]
where 日期 between '2012-9-1' and '2012-9-15'
时,发现,它又没吐10号之前的数据,为什么的?
哪位高人指点下 我哪里出问题了呢
------解决方案--------------------你的“日期”字段是datetime么?
--试试下面的
SELECT *
FROM [upreport_wl_jg2]
where cast(日期 as datetime) between '2012-9-1' and '2012-9-9'
你select一下,把日期字段的数据查出来看看
------解决方案--------------------很大的可能就是 你的日期字段不是datetime 类型的 是个字符串
--try
SELECT *
FROM [upreport_wl_jg2]
where cast(日期 as datetime) between '2012-9-1' and '2012-9-9'
------解决方案--------------------
SELECT *
FROM [upreport_wl_jg2]
where convert(varchar(8),日期,120) between '2012-9-1' and '2012-9-9'
------解决方案--------------------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