建站常识

sql语句 时间相减

发布时间 | 2014/8/7  点击 | 

“为 datediff 指定了无效的参数 1”错误的原因

access中DateDiff 的写法和MSSQL中的写法是有区别的,不注意区别就会提示:“为 datediff 指定了无效的参数 1”错误

以下是access数据库的DateDiff的写法:
sql = "select * from table where DateDiff('d',时间变量,now())=0"
而MSSQL中DateDiff的写法是这样的:
sql = "select * from table where DateDiff(d,时间变量,getdate())=0"
注意两者的区别:DateDiff('d',ymd,date())  和 (d,ymd,getdate())
mssql 时间函请用getdate(),而access中的时候函数用now()
获取当天文章数,access中的“d”用单引号,而mssql中不用单引号,否则会出错。


DateDiff 语法及实例
DateDiff()函数:返回两个日期之间的差值
表达式 DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])
timeinterval 表示相隔时间的类型,代码为:
yyyy 年
q 季
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒
 

实例:

<%starttime = "2009-9-1"
response.write "从现在到"&starttime&"有:" & DateDiff('d',starttime,now())&"天了"%>
返回结果: 从现在到2009-9-1已有XX天了.
该函数在access中可用,mssql中则要稍做修改:DateDiff(d,starttime,getdate()),而该函数在oracle中不可用

------------------------------------------------------------
select datediff(''d'','2009-01-01','2003-09-02')返回的是1;
select datediff(''d'','2009-01-02','2003-09-01')返回的是-1;
可见datediff返回的是date2和date1之间在给定参数timeinterval下的差值

相关信息