问一个有难度,走过路过的都进来看看

来源:百度知道 编辑:UC知道 时间:2024/04/29 03:06:24
是这样的:
数据库中的表b1与b2分别包含两个字段:生产日期time1(data类型)与保持期time2(单位为月分,数据类型为number型)
现在的需求是,我要搜索已经过期的产品,所以要用现在的时间减去time1,然后再跟time2比较,如果比time2大,说明已经过期。
假设查询的是产品的id,存在于表b1中,谁帮我写出这个sql语句?
塑料车床,你这样能行吗?我的那两个数据分别在两张表,你都没有关联,怎么查呀?
我的数据库是oracle

select b1.* from b1 join b2 on b1.[id] = b2.[id] where
(Month(getdate())-month(b1.data1) )+ (year(getdate()) - year(b1.data1))*12
> b2.data2

看样子你的b1是生产记录
而b2是产品记录
根据你的保持期的数据类型获
其实关键的就是用datepart(mm) mm指月
select * from b1,b2 where (datepart(getdate())-datepart(month,b1.time1) )> datepart(month,b2.time2)
用月做不太准 建议用天 单位越小越好

为什么不把time2也改成datetime类型呢,这样可以用datediff函数来判断
select datediff(mm,b1.time1,b2.time2) form b1 as b1,b2 as b2
这样的话,判断下数字为正为负就可以了;
要是非要如题,就要麻烦点先得到time1里的月份,用datepart函数,
declare @month int
select @month =datepart(mm,time1) from b1
然后接下来的就是比较一下啦;
肯定不是最好的方法,看其他人的