我的数据库中的时间是“yyyy-mm-dd 下午 hh:mm:ss”的格式,我查询时设置的是Date类型,总是查询不出来,提示“下午”附近有错,请帮忙解决,谢谢!

解决方案 »

  1.   

    你在控制面版里面把时间的类别设成 HH:mm:ss 这种类别就行了.
      

  2.   

    你在控制面版里面把时间格式设成
    HH:mm:ss
    就行了.
      

  3.   

    数据库里面的时间就会自动变成 YYYY-MM-DD HH:MM:SS
      

  4.   

    不是哦,我在VB里读入的时间格式是对的,但显示出来的时间格式不对呀,这样的话我没法查询,如果改用户端设置太麻烦,我想在VB里面直接更改系统时间格式,不知可否实现?
      

  5.   

    ch_ches(当归):
    你的意思是要我只对前面的日期做模糊查询?
      

  6.   

    其实有一个很好的解决方案:
    1、将数据库里的时间字段设置成varchar,
    2、在录入数据时用format()强制转换成时间格式 yyyy-mm-dd hh:mm:ss
    3、查询时用between '起'and '止'就可以查询出结果
      

  7.   

    zmrok(朱朱):
    这种方法不行哦,在添加进数据库时出错。
      

  8.   

    要么改Windows的时间类型,要么改变的时间查询方式,用format是不行的。我看你最好还是改windows的时间类型
      

  9.   

    如果你的字段类型是date的,可以考虑用下面的语句去实现查询:
    access里:
    select * from table1 where format(date1,'yyyy-mm-dd hh:mm:ss') > format (dtmstart,'yyyy-mm-dd hh:mm:ss') and format(date1,'yyyy-mm-dd hh:mm:ss') < format(dtmend,'yyyy-mm-dd hh:mm:ss')
    这样可以不用考虑系统时间格式对查询的影响.但是这样做带来的问题是针对全表查询,用不到索引,大数据量会影响性能.
      

  10.   

    其实朱朱的回答是可行的啊,只是我认为不需要第二步吧。。
    直接在数据库里将数据定义成varchar型的,然后在SQL语句中用between将所要查询的条件写出即可。
      

  11.   

    对varchar类型是可行的,可转换成日期时间格式就不行了。
    cogodunker(Eric):这种方法我试过了,就是查询不出来,出现同样的问题。
      

  12.   

    declare @day varchar(8)           --日期
    declare @time varchar(10)         --当日的时间
    declare @daytime varchar(19)      --日期+时间set @day=select convert(varchar(10),你的时间字段的名字,120)   --读取字段中的日期
    set @time=select convert(varchar(8),你的时间字段的名字,108)   --读取字段中的时间
    set @daytime=@day+' '+@time                                    --将二者合在一起,组成查询条件
    你试试吧!
      

  13.   

    你的意思是要我只对前面的日期做模糊查询?
    =======================
    其实你不必管其他,关键是你的时间字段在数据库里是什么类型,如果是date/time,那么你大可以不必管后面的下午而自己构建起止时间例如,要查询2005-2-3至2005-3-2的所有记录,可以这样:
    select * from testtable where dt>='2005-2-3 00:00:00.000' and dt<'2005-3-2 23:59:59.000'
      

  14.   

    declare @day varchar(8)           --日期
    declare @time varchar(10)         --当日的时间
    declare @daytime varchar(19)      --日期+时间set @day=select convert(varchar(10),你的时间字段的名字,120)   --读取字段中的日期
    set @time=select convert(varchar(8),你的时间字段的名字,108)   --读取字段中的时间
    set @daytime=@day+' '+@time                                    --将二者合在一起,组成查询条件
    你试试吧!
    上面我写的程序是在存储过程中的程序
    你可以写个存储过程试试