读书人

请问高人一个SQL查询语句中存在的有关

发布时间: 2013-03-27 11:22:42 作者: rapoo

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

读书人网 >SQL Server

热点推荐