如何通过一句SQL语句,返回一个布尔值?

时间:2022-04-16 15:13:56
例如

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语句应用!

#4


不错,用CASE WHEN 语句,有相似功能的还有decode函数,但是
此处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

#6


那么得出来的那个值,要是AS JCRQ的话,那么是DATE来的哦,那么是不是得AS一个VARCHAR2的值呢?

#7


引用 6 楼 ivanho 的回复:
那么得出来的那个值,要是AS JCRQ的话,那么是DATE来的哦,那么是不是得AS一个VARCHAR2的值呢?


as jcrq 只是将前面的 (case when end) 的结果指定一个别名(可以任意命名),并不是指实际的 jcrq 字段

#8


该回复于2012-11-24 10:19:42被管理员删除

#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语句应用!

#4


不错,用CASE WHEN 语句,有相似功能的还有decode函数,但是
此处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

#6


那么得出来的那个值,要是AS JCRQ的话,那么是DATE来的哦,那么是不是得AS一个VARCHAR2的值呢?

#7


引用 6 楼 ivanho 的回复:
那么得出来的那个值,要是AS JCRQ的话,那么是DATE来的哦,那么是不是得AS一个VARCHAR2的值呢?


as jcrq 只是将前面的 (case when end) 的结果指定一个别名(可以任意命名),并不是指实际的 jcrq 字段

#8


该回复于2012-11-24 10:19:42被管理员删除

#9


很喜欢CASE WHEN 和DECODE函数,功能强大

#10


用 1,0 代替true 或者false吧