********奇怪的SQL时间格式问题,高手救急!!!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/31 23:25:32
我用sql查询:
从jobs表中查前一段时间的记录
其中realTime表示当前时间,我用的是varchar格式
jobs表中有6条记录,realTime分别为'2008-10-27','2008-10-28','2008-11-1','2008-11-6','2008-11-6','2008-11-7'

查询语句为
select * from jobs where realTime<='2008-11-8'
时,有6条记录;

而查询语句为
select * from jobs where realTime<='2008-11-10'
是,只有3条记录,是'2008-10-27','2008-10-28','2008-11-1'

谁能告诉我,这是为什么?
额,估计也是,怎么解决呢

你用了字符型(varchar)的数据类型,这样的话
2008-11-8会大于2008-11-10
2008-9-8会大于2008-10-8
解决的办法是2008-11-08
小于10的都在前面加0

因为你用的是varchar格式,
并没有在进行时间比较,而是进行字符串比较
所以 只有一位8的时候 记录要比出现两位10 时要多

其实你做这个最好都用日期型.这样可以使用日期函数操作起来方便.
如果不是日期的可以转换为日期后在执行搜索
转换函数:CAST 和 CONVERT

将你的个位统统变成两位
即 8→08
就OK了