如何找出距当前时间大于XX天的记录?

秀小川 2012-10-15 10:09:53
SQL2000下,假设有这么两张表
表1
"用户编号" (主键)
"用户姓名"
.
.
.
表2:
"用户标号"
"时间"
如何通过SQL语句查询出距当前时间超过XX天的用户的详细信息?下面是我写的一点点,感觉没思路了!
DECLARE @date datetime
DECLARE @diff_date datetime
DECLARE @current_date datetime
set @current_date = '2012-12-10'
set @date =
(
SELECT top 1 时间
FROM BuyInformation
ORDER BY 时间 DESC
)
set @diff_date = @current_date - @date
...全文
142 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
秀小川 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

SQL code
SELECT * FROM USERINFO WHERE userid IN (SELECT userid FROM BuyInformation WHERE DATEDIFF(day, 时间, GETDATE()) > 30)

我假设你BuyInformation 表有userid和userinfo表关联
[/Quote]
就是这个意思,原来如此简单! 谢谢了!
發糞塗牆 2012-10-15
  • 打赏
  • 举报
回复
SELECT * FROM USERINFO WHERE userid IN  (SELECT userid FROM BuyInformation WHERE  DATEDIFF(day, 时间, GETDATE()) > 30)

我假设你BuyInformation 表有userid和userinfo表关联
發糞塗牆 2012-10-15
  • 打赏
  • 举报
回复
BuyInformation有userid之类的字段吗?
發糞塗牆 2012-10-15
  • 打赏
  • 举报
回复
你不需要使用@current_date,直接使用getdate()函数就可以代表你查询的当前时间了。
秀小川 2012-10-15
  • 打赏
  • 举报
回复

[Quote=引用 3 楼 的回复:]

你试试是不是你想要的:SQL code
DECLARE @date datetime
DECLARE @current_date datetime
set @current_date = '2012-12-10'
set @date =
(
SELECT top 1 时间 as date
FROM BuyInformation
WHERE 用户编号 = '000100010……
[/Quote]
这个也只能判断一个固定用户,我的意思是判断所有的用户,返回所有符合条件的用户信息!
發糞塗牆 2012-10-15
  • 打赏
  • 举报
回复
你试试是不是你想要的:
DECLARE @date datetime
DECLARE @current_date datetime
set @current_date = '2012-12-10'
set @date =
(
SELECT top 1 时间 as date
FROM BuyInformation
WHERE 用户编号 = '000100010001'
ORDER BY 时间 DESC
)
--if ( DATEDIFF(day, @date, @current_date > 30 )
-- BEGIN
SELECT * FROM USERINFO WHERE DATEDIFF(day, @date, @current_date > 30--用户编号 = '000010001001'
--END
秀小川 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

使用这个来判断DATEDIFF(dd,[需要对比的日期列],GETDATE())>xxx距当前时间大于XX天的记录
[/Quote]
多谢回答,居然有这么个函数不知道!我下面这段查询只能判断一个用户,如何对所有符合条件的记录都返回?

DECLARE @date datetime
DECLARE @current_date datetime
set @current_date = '2012-12-10'
set @date =
(
SELECT top 1 时间 as date
FROM BuyInformation
WHERE 用户编号 = '000100010001'
ORDER BY 时间 DESC
)
if ( DATEDIFF(day, @date, @current_date > 30 )
BEGIN
SELECT * FROM USERINFO WHERE 用户编号 = '000010001001'
END

發糞塗牆 2012-10-15
  • 打赏
  • 举报
回复
使用这个来判断DATEDIFF(dd,[需要对比的日期列],GETDATE())>xxx距当前时间大于XX天的记录

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧