一个SQL的问题(10分)

  • 主题发起人 主题发起人 fonder
  • 开始时间 开始时间
F

fonder

Unregistered / Unconfirmed
GUEST, unregistred user!
我的数据库是 SQL SERVER2000,数据表(rdk)中有一个字段(date)是datetime 类型,
我用select * from rdk where date like '2002-12-20%' 语句来查询2002年12月20日
的所有记录,但结果集一条记录都没有,而记录集确定存在该日的记录呀!请问各位大侠
是什么原因,是不是DATETIME 类型的字段用不了LIKE 作查询?
 
select * from rdk where date='2002-12-20'
 
select * from rdkwhere date='2002-09-20'
 
这样是不行的,因为它是DATETIME 类型,后面还有时间呀!
请帮忙!
 
急,在线等等,请帮忙!
 
select * from rdk where date>='2002-12-20 00:00:00'and date<'2002-12-21 00:00:00'
 
'2002-12-20'是字符串啊,不是日期,应该用类型转换函数转换一下吧。
 
to lanbing1400,你这样是可以,但原则是 我的SQL 语名也可以呀!
 
我的数据库是 SQL SERVER2000,数据表(rdk)中有一个字段(date)是datetime 类型,
我用select * from rdk where date like '2002-12-20%' 语句来查询2002年12月20日
的所有记录,但结果集一条记录都没有,而记录集确定存在该日的记录呀!请问各位大侠
是什么原因,是不是DATETIME 类型的字段用不了LIKE 作查询?
 
select * from rdk
where year(date)=2002 and month(date)=12 and day(date)=20
 
like只能用在字符串上吧,日期应该不行
 
还是把你的数据库的字段类型改了吧,会好弄一点!
 
如果字段类型改了,程序里许多地方要改,存储过程也要改,行不通。
 
还有不要用date这样容成为关键字的单词作为字段名
 
select * from rdk
where CONVERT(VARCHAR(10),date,120) = '2002-12-21'
 
可能用
select * from rdk
where CONVERT(VARCHAR(8),date,112) = '20021221'
或select * from rdk
where CONVERT(VARCHAR(8),date,112) = CONVERT(VARCHAR(8),'2002-12-21',112)
好不点,这样就没有日期格式的问题。

 
select * from rdk where date between '2002-12-20' and '2002-12-21'
 
fonder:

说了怎么多方法,那些行,那些不行也说说吧
 
上面提供的SQL语句应该都是可以的。
在SQL中关于日期的判断是可以直接转为字符判断的。
Like是字符串的比较函数,做模糊查询用的,除非你把
日期型字段转为字符型字段才能使用Like来做比较。
如果单纯是为了实现你所说的功能,上面的SQL语句都够了,
如果你坚持用Like,应该先把该字段转成字符型。
 
后退
顶部