现在要把数据库中在一段日期区间的数据查询出来,因为数据库中是yyyy-m-d hh:mm:ss型,要把它转化为yyyy-mm-dd,我定义了一个函数将数据库中的日期转化为yyyy-mm-dd
public function gbtime(byval dat as date) as date
     gbtime=format(dat,"yyyy-mm-dd")
end function在查询时我将数据库中的日期用上面这个函数进行转化,其中一个查询生成的sql语句如下:
  select * from log where date>=#2005-6-1# and gbtime(date)<=#2005-6-2#
运行时报错信息:[ODBC Microsoft Access Driver]:gbtime函数没有定义
可我把这函数不用在sql语句中,一切正常啊。是不是在sql语句中不能用?PS:本来可以将left(date,10)用在sql语句中来转化的,可问题是我的数据库中日期的格式是
2005-5-1 8:21:01这样的,也就是如果月份和日期是两位的话就可以,但是一位的话用left就不知道该取几位了。

解决方案 »

  1.   

    sql中当然不能执行VB本身的函数了,数据库本身有转换格式的函数,你查一下帮助吧
      

  2.   

    我现在发现一个问题,就是可以在sql中用format()函数
    但我在数据库中的字段名为date,与当前日期date有冲突
      

  3.   

    select * from log where date>=#2005-6-1# and convert(varchar(10),Date,121)<=#2005-6-2#使用convert(varchar(10),Date,121)
      

  4.   

    在SQL 2000中定义自定义函数就可以。不是在VB中
      

  5.   

    cast(convert(nvarchar,Date,101) as datetime) 这样就转成短时间格式了。
    仅仅用convert(nvarchar,Date,101)转出来的时间不能直接比较大小的,因为那是美式的格式。