amber wang 照片:我的asp里为什么使用now()总是有错?而只能用date()代替?

来源:百度文库 编辑:神马品牌网 时间:2024/04/23 23:14:41
我的asp里为什么使用now()总是有错?而只能用date()代替?错误提示:[Microsoft][ODBC SQL Server Driver][SQL Server]从字符串转换为 datetime 时发生语法错误。
请各位赐教,谢谢!

你编个test.asp包含下面内容运行一下就知道了

<%=now()%><br>
<%=date()%>

我这里的输出是:

2006-3-10 晚上 23:09:41
2006-3-10

可以看到now()是包含时间的,而date()只包含日期

因为时间你可能有其他格式定义,比如用WINDOWS优化大师加的时间格式(像我就加了"晚上"两个字),或者是你的时间格式和标准格式不同(如你的时间格式为"23:09:41 3-10-2006"),导致生成的时间字符串无法被SQL识别.

SQL很笨的,一般来说它只识别"yyyy-mm-dd hh-mm-ss"格式的时间,除非你在SQL里定义其他的格式.

如果你的程序经常出问题,可以有三种办法:

1.在传输给数据库的时候,在字符串两边加上"#"

2.通过下面程序生成标准的时间格式:

Time_Temp = Now()

Year_Temp = Year(Time_Temp)
Month_Temp = Month(Time_Temp)
Day_Temp = Day(Time_Temp)
Hour_Temp = Hour(Time_Temp)
Minute_Temp = Minute(Time_Temp)
Second_Temp = Second(Time_Temp)

Time_String = Year_Temp & "-" & Month_Temp & "-" & Day_Temp & " " & Hour_Temp & ":" & Minute_Temp & ":" & Second_Temp

最后把Time_String传递给数据库.

3.这是最后一种也是最好的办法,如果你的程序需要使用当前时间,强烈建议你在SQL的脚本或者存储过程里使用getdate()函数获取当前时间.

字符串转换为 datetime 时发生语法错误,说明在转换时没有转换为时间格式,仅仅转换为日期格式。或数据库字段数据格式不正确,改用SMALLDATETIME的数据格式。

那是因为你传递给函数的字符串有问题,好好查看一下Date()函数和Now()函数的用法

不管是查询还是添加还是删除记录,只要涉及到日期的,并且你的数据库中相应的字段也是“日期时间”类型,都要使用“#”符号将用now()或者date()产生的时间包在里面,如:
insert into biao(name_,info_,adddate) values('神仙','妖怪?谢谢!',#" & now() & "#)

这个是数据库的问题
因为ACCESS数据库和MSSQL数据库的时间格式不一致造成的

看看是不是在输入的格式上有问题(1900-01-01)这样是正确的,再看看你的字段是不是日期型。