sql 如何在sql语句里使用函数

我有一个库,日期的字段为a,保质期的字段为b现在我想把过期的记录给找出来.应该怎样写sql语句应该是a减去现在的时间再减去b.如果小于0则视为过期.但是在sql里不会写s... 我有一个库,日期的字段为a,保质期的字段为b
现在我想把过期的记录给找出来.应该怎样写sql语句

应该是a减去现在的时间再减去b.如果小于0则视为过期.但是在sql里不会写sql语句.忘解答.万分感谢.
展开
 我来答
charlif
2008-10-27 · TA获得超过231个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:0
展开全部
楼主的逻辑估计不对,应该是用b保质期减去现在日期和a的差,算出来才对。即 b-(现在日期 - a) <0表示过期。

select b-datediff(day,a,getdate()) as DayNum,
IsOverdue = case when (b-datediff(day,a,getdate()))<0 then '过期' else '未过期' end
from tablename
百度网友a800768
2008-10-27 · TA获得超过1841个赞
知道大有可为答主
回答量:1928
采纳率:0%
帮助的人:1737万
展开全部
用datediff函数,算天数

datediff(day,a,b)
算保质期b与日期a之间的天数
如果>0,则在保质期内,=0则在保质期当天,如果<0则过了保质期.

如果查在保质期内的,在条件语句中写

where datediff(day,a,b)>=0
不知你的日期a是什么日期,如果查是否到保质期,应该是保质期与实时时间来比较判断.就是今天查的话就用当天的日期.条件语句应该这样写.

where datediff(day,getdate(),b)>=0
意思就是保质期b距今天还不多少天,保质期内的当然是>=0

如果<0则就是过了保质期.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wang2129929
2008-10-27 · 超过14用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:46.2万
展开全部
你把B字段也设置成日期型,这样 ,如果B>今天就是没过期,否则就是过期,如果想看保质期多少天就用DATEDIFF(day,出厂日期,过期日期) as 一个新列就OK了,DATEDIFF返回两个时间的差,可以反回月,日,年,day就是反回相差多少天,我说的够简单吧,清晰吧,分不给我都可惜了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
赵晶
推荐于2016-11-02 · 超过12用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:24.1万
展开全部
select * from 表
where datediff(day,getdate(), 日期A )>B
--前提:B是天数
select * from 表
where datediff(month,getdate(), 日期A )>B
--前提:B是月数 同样 如果B是年数则改为year
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hotyxm
2008-10-27 · TA获得超过1028个赞
知道大有可为答主
回答量:1698
采纳率:50%
帮助的人:1200万
展开全部
要看你的是取什么日期了,如果是天数的话,那么很简单
换个思维,如果a-现在时间大于b-现在时间,那么就是过期了
select * from 表
where (datediff(day,a,getdate()) - datediff(day,b,getdate())) > 0
;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式