日期:2014-05-17  浏览次数:21118 次

◆奇怪的日期转换问题?
数据库明明有2007-2-7的纪录,但是却找不出来.
因为数据库里存的是日期+时间的字段,所以用convert转换了一下,
以下是我用ASP+ACCESS下的测试:


countsql= "select   count(id)   as   id   from   orders   where   convert(varchar(10),createdate,120)= '2007-2-7 '   "

set   countrs=server.createobject( "adodb.recordset ")    
countrs.open   countsql,conn,1,1
ordernb=countrs( "id ")
rs.close
set   rs=nothging


但是这样测试的结果却是空的.
可是我用sql查询器里来查询却是有纪录的,到底是哪里错了呢?
谢谢

------解决方案--------------------
countsql= "select count(id) as id from orders where convert(varchar(10),createdate,120)=#2007-2-7# "
------解决方案--------------------
120是什么意思啊
------解决方案--------------------
countsql= "select count(id) as id from orders where convert(varchar(10),createdate,120)= '2007-2-7 ' "

改成

countsql= "select count(id) as id from orders where datediff(day,createdate, '2007-2-7 ')=0 "

试试
------解决方案--------------------

我用convert(varchar(10),idate,120) 为什么2006-12-1 9:02:00这样的搜索不出来
下面这样的数据才能搜索出来啊
2006-12-26 8:53:00
------解决方案--------------------
拟指定了varchar(10),自然与9位的2006-12-1不同了。
------解决方案--------------------
countsql= "select count(id) as id from orders where [createdate]=# "&formatdatetime(cstr( "2007-2-7 "),2)& "# "
------解决方案--------------------
是不是你的createdate字段为长时间格式的???即为yyyy-mm-dd hh:mm:ss格式,如果是这样的话就还要改一下sql语句,改为:
countsql= "select count(id) as id from orders where formatdatetime(createdate,2)=# "&formatdatetime(cstr( "2007-2-7 "),2)& "# "
------解决方案--------------------
前天我搞了一个系统,数据是从前用access编了一下录入的,后来我用asp怎么也不显示,也得不到他的长度,也无法更新,后来想了一招,把所有的数据复制到excel中,然后用替换,完了后再复制到ACCESS中,就可以了,后来用asp更新,一切OK...