DateDiff函数问题!急分不够再加!!!

时间:2021-06-20 21:29:03
异常详细信息: System.Data.OleDb.OleDbException: 语法错误 (操作符丢失) 在查询表达式 'uname = 'wj' and upass = 'wj'where DateDiff(d,'uday','DateTime.Now.ToString()')<class-2' 中。

string nowtime=DateTime.Now.ToString();

OleDbConnection conn =new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ Server.MapPath("new.mdb"));
conn.Open();

string sql = "select * from usercard where uname = '" + this.name.Text + "' and upass = '" + this.pass.Text + "'and DateDiff(d,uday,nowtime)<class-2";
OleDbCommand cmd = new OleDbCommand(sql,conn);

OleDbDataReader reader = cmd.ExecuteReader();


class和uday都是数据库的字段
是不是这里错了string nowtime=DateTime.Now.ToString();

9 个解决方案

#1


select * from usercard where uname = '" + this.name.Text + "' and upass = '" + this.pass.Text + "'and DateDiff(d,uday,nowtime)<class-2

===〉
select * from usercard where uname = '" + this.name.Text + "' and upass = '" + this.pass.Text + "' and DateDiff(d,uday,nowtime)<class-2

好像是在and datediff前面少了一个空格

#2


DATEDIFF
返回跨两个指定日期的日期和时间边界数。 

语法
DATEDIFF ( datepart , startdate , enddate ) 

参数
datepart

是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft&reg; SQL Server&#8482; 识别的日期部分和缩写。

日期部分 缩写 
year yy, yyyy 
quarter qq, q 
Month mm, m 
dayofyear dy, y 
Day dd, d 
Week wk, ww 
Hour hh 
minute mi, n 
second ss, s 
millisecond ms 


startdate

是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。 

因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。

如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。 

enddate

是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

返回类型
integer

注释
startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。

当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。

计算跨分钟、秒和毫秒这些边界的方法,使得 DATEDIFF 给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。

示例
此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。

USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO

#3


string nowtime=DateTime.Now.ToString();这样定义对吗?
是否可以这样引用
DateDiff(d,uday,nowtime)

#4


第一个对

第二个错,DateDiff是SQLSERVER中的日期含数,非.net中的方法。在sqlserver中有效。

#5


那我该怎么写啊

#6



写在SQL语句中

#7


谁能不能帮我写一下小弟真的不知道

谢谢

#8


string nowtime=DateTime.Now.ToString();这样定义对吗?
是否可以这样引用
DateDiff(d,uday,@nowtime)

将nowtime最为参数传过来!


===弯弯的月亮小小的船,小小的船,两头尖,我在小小的船里坐,只看见闪闪
的星星蓝蓝的天.
===本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利 
===我的blog:http://loulanlouzhu.blogone.net

#9


哪位大哥能帮我完整地写出来啊
不慎感激!!

#1


select * from usercard where uname = '" + this.name.Text + "' and upass = '" + this.pass.Text + "'and DateDiff(d,uday,nowtime)<class-2

===〉
select * from usercard where uname = '" + this.name.Text + "' and upass = '" + this.pass.Text + "' and DateDiff(d,uday,nowtime)<class-2

好像是在and datediff前面少了一个空格

#2


DATEDIFF
返回跨两个指定日期的日期和时间边界数。 

语法
DATEDIFF ( datepart , startdate , enddate ) 

参数
datepart

是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft&reg; SQL Server&#8482; 识别的日期部分和缩写。

日期部分 缩写 
year yy, yyyy 
quarter qq, q 
Month mm, m 
dayofyear dy, y 
Day dd, d 
Week wk, ww 
Hour hh 
minute mi, n 
second ss, s 
millisecond ms 


startdate

是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。 

因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。

如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。

有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。 

enddate

是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。

返回类型
integer

注释
startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。

当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。

计算跨分钟、秒和毫秒这些边界的方法,使得 DATEDIFF 给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。

示例
此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。

USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO

#3


string nowtime=DateTime.Now.ToString();这样定义对吗?
是否可以这样引用
DateDiff(d,uday,nowtime)

#4


第一个对

第二个错,DateDiff是SQLSERVER中的日期含数,非.net中的方法。在sqlserver中有效。

#5


那我该怎么写啊

#6



写在SQL语句中

#7


谁能不能帮我写一下小弟真的不知道

谢谢

#8


string nowtime=DateTime.Now.ToString();这样定义对吗?
是否可以这样引用
DateDiff(d,uday,@nowtime)

将nowtime最为参数传过来!


===弯弯的月亮小小的船,小小的船,两头尖,我在小小的船里坐,只看见闪闪
的星星蓝蓝的天.
===本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利 
===我的blog:http://loulanlouzhu.blogone.net

#9


哪位大哥能帮我完整地写出来啊
不慎感激!!