SQL语句中能不能使用自己定义的函数?
现在要把数据库中在一段日期区间的数据查询出来,因为数据库中是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就不知道该取几位了。
问题点数:50、回复次数:6Top
1 楼lzheng2001(1加1)回复于 2005-06-02 20:05:37 得分 5
sql中当然不能执行VB本身的函数了,数据库本身有转换格式的函数,你查一下帮助吧Top
2 楼liulonghao(llh2002)回复于 2005-06-02 20:15:39 得分 0
我现在发现一个问题,就是可以在sql中用format()函数
但我在数据库中的字段名为date,与当前日期date有冲突Top
3 楼Athickhead(穿着三角裤到处跑不叫裸奔)回复于 2005-06-02 20:52:49 得分 20
select * from log where date>=#2005-6-1# and convert(varchar(10),Date,121)<=#2005-6-2#
使用convert(varchar(10),Date,121)Top
4 楼zhujiechang(小朱)回复于 2005-06-02 21:16:41 得分 5
在SQL 2000中定义自定义函数就可以。不是在VB中Top
5 楼samwzhang(分全给我)回复于 2005-06-02 21:35:58 得分 20
cast(convert(nvarchar,Date,101) as datetime) 这样就转成短时间格式了。
仅仅用convert(nvarchar,Date,101)转出来的时间不能直接比较大小的,因为那是美式的格式。
Top
6 楼liulonghao(llh2002)回复于 2005-06-03 19:16:06 得分 0
呵呵
谢谢各位
给分Top




