我的sql语句:①select * from checking where start_time<'08:00:00';
②select * from checking where start_time>'08:00:00';
其中,start_time是varchar类型,
①选出的结果如'07:55:00','08:11:01'等,
②选出的结果为空。
这是什么问题?字符串在SQL语句中怎么比较?
②select * from checking where start_time>'08:00:00';
其中,start_time是varchar类型,
①选出的结果如'07:55:00','08:11:01'等,
②选出的结果为空。
这是什么问题?字符串在SQL语句中怎么比较?
set @aa='08:00:01'
set @bb='08:00:00'
if @aa>@bb
print ('aa大')
else
print ('aa小')
declare @aa varchar,@bb varchar
set @aa='08:00:01'
set @bb='08:00:00'
if @aa>@bb
print ('aa大')
else
print ('aa小')
是两种不同的结果。搞不清楚。
創建checking表:
CREATE TABLE [dbo].[checking](
[start_time] [varchar](50) NULL
) ON [PRIMARY]GO
插入測試數據:
insert into checking (start_time) values ('08:00:00')
insert into checking (start_time) values ('07:55:00')
insert into checking (start_time) values ('08:11:01')
insert into checking (start_time) values ('09:12:31')
insert into checking (start_time) values ('08:01:12')
insert into checking (start_time) values ('07:52:12')
查詢1:
select * from checking where start_time<'08:00:00'
/*
start_time
--------------------------------------------------
07:55:00
07:52:12(2 個資料列受到影響)*/查詢2:
select * from checking where start_time>'08:00:00'/*
start_time
--------------------------------------------------
08:11:01
09:12:31
08:01:12(3 個資料列受到影響)*/
select CONVERT(datetime,start_time) as start_time from checking
where start_time>'08:00:00'
[/Quote]
varchar 如不給長度,默認長度是0
所以'08:00:01'和'08:00:00'只比對了第一位0.