我是在09年第一天1分钟内发现这个问题的...大家先看一下我的一句SQL语句:
dim datetime
datetime=date()
set rs=server.createobject("ADODB.Recordset")
sql="select top 5 * from [abc] where convert(varchar(10),[savetime],120)='"&datetime&"'"
rs.open sql,conn,1,2在sql server2000中,我们写sql语句比较日期和获取日期的时候,通常都是使用convert(varchar(10),[savetime],120)这句来着,意思是转义成varchar型后,截取前10位数.我程序写好的时候,是2008-12-25.那时候由于这列时间刚好10位没事,但是在2009-1-1的时候就出错了.大家可能发现了,时间没有补零.如果时间是2009-01-01的话.就不会发生错误了.我的数据库中的日期字段,我也是默认值用:convert(varchar(10),getdate(),120)来着,这样截取出来的时间也是2009-1-1这种短时间类型,而且没有补零(2009-01-01),可能服务器是这么设定时间的,服务器我没有权限修改他,那我们在数据库中,应该怎么设定,才能让截取到的时间为有补零状态的时间呢?我有想到个办法,就是Right(100+Month(getdate()),2)让月份自己补零.那还有其他办法可以解决吗?
dim datetime
datetime=date()
set rs=server.createobject("ADODB.Recordset")
sql="select top 5 * from [abc] where convert(varchar(10),[savetime],120)='"&datetime&"'"
rs.open sql,conn,1,2在sql server2000中,我们写sql语句比较日期和获取日期的时候,通常都是使用convert(varchar(10),[savetime],120)这句来着,意思是转义成varchar型后,截取前10位数.我程序写好的时候,是2008-12-25.那时候由于这列时间刚好10位没事,但是在2009-1-1的时候就出错了.大家可能发现了,时间没有补零.如果时间是2009-01-01的话.就不会发生错误了.我的数据库中的日期字段,我也是默认值用:convert(varchar(10),getdate(),120)来着,这样截取出来的时间也是2009-1-1这种短时间类型,而且没有补零(2009-01-01),可能服务器是这么设定时间的,服务器我没有权限修改他,那我们在数据库中,应该怎么设定,才能让截取到的时间为有补零状态的时间呢?我有想到个办法,就是Right(100+Month(getdate()),2)让月份自己补零.那还有其他办法可以解决吗?
解决方案 »
- SQL取小数2位
- mssql 存储过程拼接条件
- SQL SERVER 中的"页"的概念有详细的资料吗?
- 是2000的还是2005的?
- 请教SQL 语句
- 为防止SQL注入,将单引号改为两个单引号,但发生了错误?请帮帮忙...
- 急啊。请问大家用select语句只想返回符合条件的n条记录怎么弄(sql server)?
- 怎么从远程服务器将SQL数据库中数据导入到本地EXCEL中?
- 500分求一个查询的问题已解决!请 txlicenhe(马可) realgz(realgz)等来领分!!
- 不同寻常的SQLSERVER本地连接错误~大虾们请进
- 数据库附加产生的排序问题
- --------帮老鼠MM问个问题----------
--SQL 2005
-- 有什么不对呢?
declare @x datetime
set @x='2009-1-1'
select convert(varchar(10),@x,120)
/*
--result:
2009-01-01
*/
我用的2000
select convert(varchar(10),getdate(),120)
---结果
2009-01-04没有问题啊!~~~~~~~~
你的数据库 的补丁 有没有 啊!~~~~~
--declare @x datetime
--set @x='2009-1-1'
select convert(varchar(10),'2009-1-1',120)
select convert(varchar(10),'2009-01-01',120)
--result
2009-01-01楼主,我用的sql2000啊,正常啊!
datetime=date()
set rs=server.createobject("ADODB.Recordset")
sql="select top 5 * from [abc] where convert(varchar(10),[savetime],121)=convert(varchar(10),getdate(),121)"
rs.open sql,conn,1,2