table : jcsjzp
clm: jcbh(varchar2(20)),jcrq (sysdate)
jcbh jcrq
TA123 2011-08-12 10:43:00
怎么通过一句SQL语句,判断jcrq的时间在3个月内有效,即用系统时间to_date后与 add_months(jcrq,3)比较,若系统时间>jcrq
即为false或0 ,系统时间<jcrq 即为true或1
请大侠们帮帮忙....
10 个解决方案
#1
select jcbn,
case when sysdate < add_months(jcrq,3) then 1
else 0
end as jcrq
from tabname;
#2
SELECT jcbn,
CASE WHEN sysdate<add_months(jcrq,3) THEN 1
ELSE 0
END as jcrq
FROM jcsjzp
#3
SELECT jcbn,jcrq,
CASE WHEN sysdate<add_months(jcrq,3) THEN 1
ELSE 0
END as isExpire
FROM jcsjzp
主要就是case when语句应用!
CASE WHEN sysdate<add_months(jcrq,3) THEN 1
ELSE 0
END as isExpire
FROM jcsjzp
主要就是case when语句应用!
#4
不错,用CASE WHEN 语句,有相似功能的还有decode函数,但是
此处sysdate-add_months(jcrq,3)不是一个固定值,因此无法用decode,只能用CASE WHEN 了
此处sysdate-add_months(jcrq,3)不是一个固定值,因此无法用decode,只能用CASE WHEN 了
#5
--只考虑日期,不考虑时分秒的话,建议用下面的:
SELECT jcbn,
CASE WHEN to_char(sysdate,'yyyy-mm-dd')<to_char(add_months(jcrq,3),'yyyy-mm-dd') THEN 1
ELSE 0
END as jcrq
FROM jcsjzp
SELECT jcbn,
CASE WHEN to_char(sysdate,'yyyy-mm-dd')<to_char(add_months(jcrq,3),'yyyy-mm-dd') THEN 1
ELSE 0
END as jcrq
FROM jcsjzp
#6
那么得出来的那个值,要是AS JCRQ的话,那么是DATE来的哦,那么是不是得AS一个VARCHAR2的值呢?
#7
as jcrq 只是将前面的 (case when end) 的结果指定一个别名(可以任意命名),并不是指实际的 jcrq 字段
#8
#9
很喜欢CASE WHEN 和DECODE函数,功能强大
#10
用 1,0 代替true 或者false吧
#1
select jcbn,
case when sysdate < add_months(jcrq,3) then 1
else 0
end as jcrq
from tabname;
#2
SELECT jcbn,
CASE WHEN sysdate<add_months(jcrq,3) THEN 1
ELSE 0
END as jcrq
FROM jcsjzp
#3
SELECT jcbn,jcrq,
CASE WHEN sysdate<add_months(jcrq,3) THEN 1
ELSE 0
END as isExpire
FROM jcsjzp
主要就是case when语句应用!
CASE WHEN sysdate<add_months(jcrq,3) THEN 1
ELSE 0
END as isExpire
FROM jcsjzp
主要就是case when语句应用!
#4
不错,用CASE WHEN 语句,有相似功能的还有decode函数,但是
此处sysdate-add_months(jcrq,3)不是一个固定值,因此无法用decode,只能用CASE WHEN 了
此处sysdate-add_months(jcrq,3)不是一个固定值,因此无法用decode,只能用CASE WHEN 了
#5
--只考虑日期,不考虑时分秒的话,建议用下面的:
SELECT jcbn,
CASE WHEN to_char(sysdate,'yyyy-mm-dd')<to_char(add_months(jcrq,3),'yyyy-mm-dd') THEN 1
ELSE 0
END as jcrq
FROM jcsjzp
SELECT jcbn,
CASE WHEN to_char(sysdate,'yyyy-mm-dd')<to_char(add_months(jcrq,3),'yyyy-mm-dd') THEN 1
ELSE 0
END as jcrq
FROM jcsjzp
#6
那么得出来的那个值,要是AS JCRQ的话,那么是DATE来的哦,那么是不是得AS一个VARCHAR2的值呢?
#7
as jcrq 只是将前面的 (case when end) 的结果指定一个别名(可以任意命名),并不是指实际的 jcrq 字段
#8
#9
很喜欢CASE WHEN 和DECODE函数,功能强大
#10
用 1,0 代替true 或者false吧