我的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语句中怎么比较?

解决方案 »

  1.   

    declare @aa varchar(10),@bb varchar(10)
    set @aa='08:00:01'
    set @bb='08:00:00'
    if @aa>@bb 
    print ('aa大')
    else
    print ('aa小')
      

  2.   


    declare @aa varchar,@bb varchar
    set @aa='08:00:01'
    set @bb='08:00:00'
    if @aa>@bb 
        print ('aa大')
    else
        print ('aa小')
    是两种不同的结果。搞不清楚。
      

  3.   

    convert转化怎么用啊,是convert('08:00:00')还是怎么滴?
      

  4.   

    --測試
    創建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 個資料列受到影響)*/
      

  5.   

    結合以上的數據:
      select CONVERT(datetime,start_time) as start_time  from checking
      where start_time>'08:00:00'
      

  6.   

    ……
    [/Quote]
    varchar 如不給長度,默認長度是0
    所以'08:00:01'和'08:00:00'只比對了第一位0.