很多人写网站代码时候,一开始都是ACCESS的。
因为它是一个很不成熟的系统,所以在大应用下会出问题。
所以网站发展的好的话都会换成SQL的数据库。
结果问题来了。
比如:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]'now' 不是可以识别的 函数名。
有人认为出现这样的问题很简单。就是SQL不认识now()函数
其实不是的。SQL认识NOW(),只是在SQL的数据结构下他不能接受她。
我们来看看代码:
Conn.Execute("INSERT INTO xc_jslog (jsname,content,log_date,style) VALUES ('"&jsname&"','"&n&"',now(),3)")
now()这样写就不认识,但是这样写SQL就认识了。
sjadd=now()
Conn.Execute("INSERT INTO xc_jslog (jsname,content,log_date,style) VALUES ('"&jsname&"','"&n&"','"&sjadd&"',3)")
看明白了么?只是多了一个转换。其实SQL需要一组'"&&"'符号,而now加上这组符号就不是函数了。
在SQL中,完成时间转换和获取的是GETDATE函数
sqlserver的时间函数是getDate(),具标识时间类型的不能加引号。
使用now的话要做成变量的形式才可以。
即:conn.execute("delete from online where datediff(s,datetime,getDate()) > 60")
或:conn.execute("delete from online where datediff('s',datetime,'" + now + "') > 60")
但是80%的人会报错,说getdate不认识。
因为还有其他错误,就是前面的S。要有引号。
SQL非常看重代码的合法性。不错哦。。。
所以就用最上面的或者+now()+吧。
写的累死了,到此结束吧。
OA的自动发信要完成了。
哈哈。
留言