日期:2014-05-17  浏览次数:20492 次

请教高人一个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'

------解决方案--------------------
引用:
可是出了一个问题,选出来的日期格式变成了“09 2 2012 12:00AM” 但是我想要的格式是2012-9-1这样的,怎么转换一下呢?解决完结贴咯。


引用:
很大的可能就是 你的日期字段不是datetime 类型的 是个字符串

SQL code
--try
SELECT *
FROM [upreport_wl_jg2]
where cast(日期 ……

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