+ -
当前位置:首页 → 问答吧 → like问题

like问题

时间:2011-12-13

来源:互联网

表A
ID ADD_TIME SL
1 2011-09-22 11:23:52 2
2 2011-09-24 11:36:52 4
3 2011-09-24 14:21:52 2
4 2011-09-24 15:25:52 3
5 2011-09-24 15:06:52 3
6 2011-09-24 19:36:52 1
7 2011-09-24 20:36:52 7
8 2011-09-24 22:36:52 11
9 2011-09-26 20:36:52 12

问题:
add_time这列数据类型为DATETIME类型

我想用:
SQL code
SELECT * 
  FROM 表A
  where [ADD_TIME] like '2011-09-24%'


这样都不行吗?查出来的结果为空,是不是DATETIME类型不支持呢,我用其它列又没有问题的

作者: sxssg   发布时间: 2011-12-13

SELECT * 
  FROM 表A
  where datediff(day,[ADD_TIME], '2011-09-24')=0

作者: ssp2009   发布时间: 2011-12-13

引用 1 楼 ssp2009 的回复:
SELECT *
FROM 表A
where datediff(day,[ADD_TIME], '2011-09-24')=0


SQL code
where datediff(day,[ADD_TIME], '2011-09-24')=0


请问一下这句什么意思呢,谢谢!

作者: sxssg   发布时间: 2011-12-13

SQL code
SELECT * 
  FROM 表A
  where convert(varchar(10),[ADD_TIME],120)='2011-09-24'

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

引用 2 楼 sxssg 的回复:

引用 1 楼 ssp2009 的回复:
SELECT *
FROM 表A
where datediff(day,[ADD_TIME], '2011-09-24')=0


SQL code
where datediff(day,[ADD_TIME], '2011-09-24')=0


请问一下这句什么意思呢,谢谢!


两个日期的天数相差 0.

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

SELECT * 
  FROM 表A
  where datediff(dd,[ADD_TIME] , '2011-09-24') = 0

SELECT * 
  FROM 表A
  where convert(varchar(10),[ADD_TIME] , 120) = '2011-09-24'

作者: dawugui   发布时间: 2011-12-13

SQL code

if object_id('tb') is not null
   drop table tb
go
create table tb
(
 id int identity(1,1),
 add_time datetime,
 sl int
)
go
insert into tb (add_time,sl)
select '2011-09-22 11:23:52',2 union all
select '2011-09-24 11:36:52',4 union all
select '2011-09-24 14:21:52',2 union all
select '2011-09-24 15:25:52',3 union all
select '2011-09-24 15:06:52',3 union all
select '2011-09-24 19:36:52',1 union all
select '2011-09-24 20:36:52',7 union all
select '2011-09-24 22:36:52',11 union all
select '2011-09-24 20:36:52',12
go
SELECT * 
  FROM tb
  where convert(varchar(10),add_time,120)='2011-09-24'   --把日期格式化成yyyy-mm-dd格式再比较
go
/*
id          add_time                sl
----------- ----------------------- -----------
2           2011-09-24 11:36:52.000 4
3           2011-09-24 14:21:52.000 2
4           2011-09-24 15:25:52.000 3
5           2011-09-24 15:06:52.000 3
6           2011-09-24 19:36:52.000 1
7           2011-09-24 20:36:52.000 7
8           2011-09-24 22:36:52.000 11
9           2011-09-24 20:36:52.000 12

(8 行受影响)
*/

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


因为like是对所有字符进行模糊查询,DATETIME类型是不支持隐式转换的,需要使用convert()或cast()函数转换成字符类型,你说用其他列没问题,这里的其他列可以是int类型或者字符类型方可

作者: badyflf   发布时间: 2011-12-14