SQL语句中的字段时间怎样和现在时间作比较
数据库中有一张用户表users,里面有个字段endtime,记录着用户的到期日期,比如到期日期是2012—11—25,在一个用户信息管理页面中,我想查找还有30天就到期的...
数据库中有一张用户表users,里面有个字段endtime,记录着用户的到期日期,比如到期日期是
2012—11—25,在一个用户信息管理页面中,我想查找还有30天就到期的用户,我是这样尝试的,select * from users where endtime - datatime.now < 30;程序运行错误,请问这个SQL 语句该怎么写,或者说怎样实现这个功能,敬请各位老师赐教。我用的是c#语言。 展开
2012—11—25,在一个用户信息管理页面中,我想查找还有30天就到期的用户,我是这样尝试的,select * from users where endtime - datatime.now < 30;程序运行错误,请问这个SQL 语句该怎么写,或者说怎样实现这个功能,敬请各位老师赐教。我用的是c#语言。 展开
3个回答
展开全部
2 SQL Server 获得当前日期的函数: GETDATE() GETUTCDATE() CURRENT_TIMESTAMP
GETDATE(): 返回当前系统日期和时间
GETUTCDATE(): 使用 DT_DBTIMESTAMP 格式返回以 UTC 时间(通用协调时间或格林尼治标准时间)表示的系统当前日期
CURRENT_TIMESTAMP: 返回当前日期的和时间,等价于GETDATE()函数.注此函数不带括号"()"
-----------------------------------------------------------------------------------------------------------------
--- SELECt GETDATE() AS [GETDATE],CURRENT_TIMESTAMP AS [CURRENT_TIMESTAMP],GETUTCDATE() AS [GETUTCDATE] ---
--- 返回结果:GETDATE CURRENT_TIMESTAMP GETUTCDATE ---
--- 2008-12-04 18:28:50.437 2008-12-04 18:28:50.437 2008-12-04 10:28:50.437 ---
-----------------------------------------------------------------------------------------------------------------
4 SQL Server 日期的加减函数: DATEDIFF DATEADD
DATEDIFF: 返回跨两个指定日期的日期边界数和时间边界数, 语法:DATEDIFF ( datepart , startdate , enddate ) 用 enddate 减去 startdate
注:datepart 指定应在日期的哪一部分计算差额的参数,其日期相减时,只关注边界值,例SELECT DATEDIFF(YEAR,'2008-12-31','2009-1-1') 返回 1
DATEADD : 返回给指定日期加上一个时间间隔后的新 datetime 值。 语法:DATEADD (datepart , number, date )
注: datepart 指定要返回新值的日期的组成部分
number 使用来增加 datepart 的值。正数表示增加,负数表示减少,如果是小数则忽略小数部分,且不做四舍五入。
GETDATE(): 返回当前系统日期和时间
GETUTCDATE(): 使用 DT_DBTIMESTAMP 格式返回以 UTC 时间(通用协调时间或格林尼治标准时间)表示的系统当前日期
CURRENT_TIMESTAMP: 返回当前日期的和时间,等价于GETDATE()函数.注此函数不带括号"()"
-----------------------------------------------------------------------------------------------------------------
--- SELECt GETDATE() AS [GETDATE],CURRENT_TIMESTAMP AS [CURRENT_TIMESTAMP],GETUTCDATE() AS [GETUTCDATE] ---
--- 返回结果:GETDATE CURRENT_TIMESTAMP GETUTCDATE ---
--- 2008-12-04 18:28:50.437 2008-12-04 18:28:50.437 2008-12-04 10:28:50.437 ---
-----------------------------------------------------------------------------------------------------------------
4 SQL Server 日期的加减函数: DATEDIFF DATEADD
DATEDIFF: 返回跨两个指定日期的日期边界数和时间边界数, 语法:DATEDIFF ( datepart , startdate , enddate ) 用 enddate 减去 startdate
注:datepart 指定应在日期的哪一部分计算差额的参数,其日期相减时,只关注边界值,例SELECT DATEDIFF(YEAR,'2008-12-31','2009-1-1') 返回 1
DATEADD : 返回给指定日期加上一个时间间隔后的新 datetime 值。 语法:DATEADD (datepart , number, date )
注: datepart 指定要返回新值的日期的组成部分
number 使用来增加 datepart 的值。正数表示增加,负数表示减少,如果是小数则忽略小数部分,且不做四舍五入。
追问
我这样做了,
select * from busers where DateDiff(day,endtime,getdate()) < 30,但还是报错,说,找不到GETGATE()。
追答
2005中应该是有getdate()函数的。
select getdate() 你看看能不能通过
参考资料: http://hi.baidu.com/myloveral/blog/item/e9f1249b7a6e4ea3c8eaf455.html
展开全部
你用的是什么数据库?一般数据库都 有相应的日期函数。像sql server2000里面有datadiff 函数。
追问
我用的是SQL 2005
追答
sql 2005里面应该有datediff函数的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我不知道怎么改,但是我知道你是哪错了
endtime只datetime型的,而30是int型的,两者不能比较
endtime只datetime型的,而30是int型的,两者不能比较
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询