+ -
当前位置:首页 → 问答吧 → 请教一个MS SQL时间段查询问题

请教一个MS SQL时间段查询问题

时间:2011-12-20

来源:互联网

在数据库里面时间的存储形如: 2011-9-18 8:16:26
是字符串类型

想问一下如果想查询 2011年9月1号到2011年10月1号的数据,该如何处理?

Thanks!!!!

作者: beanya   发布时间: 2011-12-20

SQL code

select * from tb where convert(varhcar(10),日期时间字段,120) between '2011-09-01' and '2011-10-01'

作者: pengxuan   发布时间: 2011-12-20

SQL code
select * from tb where convert(datetime,dt)>='2011-09-01' and convert(datetime,dt)<'2011-10-02'

作者: qianjin036a   发布时间: 2011-12-20

SQL code
select * from tb where col >'2011-09-01' and col<'2011-10-01'


--不经转换,来得更快些...

作者: OrchidCat   发布时间: 2011-12-20

Thanks!
另外的问题,因为其他地方用了“日历”选择,日期的形式是2011-9-1,不是2011-09-01
所以查询有问题。

作者: beanya   发布时间: 2011-12-20

SQL code
select * from tb where convert(varchar(10),时间字段,120) between '2011-09-01' and '2011-10-01'

作者: fredrickhu   发布时间: 2011-12-20

引用 4 楼 beanya 的回复:
Thanks!
另外的问题,因为其他地方用了“日历”选择,日期的形式是2011-9-1,不是2011-09-01
所以查询有问题。

那需要转换一下。

作者: fredrickhu   发布时间: 2011-12-20

how?多谢!
引用 6 楼 fredrickhu 的回复:
引用 4 楼 beanya 的回复:
Thanks!
另外的问题,因为其他地方用了“日历”选择,日期的形式是2011-9-1,不是2011-09-01
所以查询有问题。

那需要转换一下。

作者: beanya   发布时间: 2011-12-20

引用 4 楼 beanya 的回复:
Thanks!
另外的问题,因为其他地方用了“日历”选择,日期的形式是2011-9-1,不是2011-09-01
所以查询有问题。

那就用convert转换
SQL code

select convert(varchar(10),cast('2011-9-1' as datetime),120)
/*
----------
2011-09-01

(1 行受影响)
*/

作者: pengxuan   发布时间: 2011-12-20

SQL code
declare @s datetime
set @s='2011-9-1'
select convert(varchar(10),CAST(@s as datetime),120)

/*----------
2011-09-01

(1 行受影响)*/

作者: fredrickhu   发布时间: 2011-12-20

还是不行,现在的code是
select * from tb where convert(varchar(10),systemtime,120) between convert(varchar(10),cast('2011-9-1' as datetime),120) and convert(varchar(10),cast('2011-10-1' as datetime),120)

能查到18号的,但不能查到7号的数据

但如果
select * from tb where convert(varchar(10),systemtime,120) between '2011-9-1' and '2011-9-9'
就能查到7号的数据

作者: beanya   发布时间: 2011-12-20

select * from tb where convert(varchar(10),systemtime,120) between '2011-9-1' and '2011-10-1'

能查到18号的,但不能查到7号的

作者: beanya   发布时间: 2011-12-20

也就是要查到7号的时间段必须是1号到9号之间,终止时间超过10号就不能查到

作者: beanya   发布时间: 2011-12-20