oracle 中比较日期大小,日期定义的是varchar2类型的,比如'2011-10-21'
发布网友
发布时间:2022-04-08 00:36
我来回答
共4个回答
热心网友
时间:2022-04-08 02:06
比较日期是不需要通过int类型的,可以用to_date函数,如果你的日期格式是固定的,那么可以to_date('2011-10-21','yyyy-mm-dd') ,比如A,B两个字段都是格式固定的Varchar2型日期值,那么,比较日期可以用如下语句
select * from 表名 where to_date(A,'yyyy-mm-dd') -to_date(B,'yyyy-mm-dd') >180
oracle环境下测试通过
热心网友
时间:2022-04-08 03:24
SELECT COUNT(*) AS "几位同学", SUM(L2.SCORE) "分值之和"
FROM (select DISTINCT L1.NAME, L1.SCORE
FROM (SELECT TA.*
FROM TA
WHERE to_date(DECODE(TA.DATEB,
'null',
TO_CHAR(SYSDATE, 'YYYY/MM/DD'),
TA.DATEB),
'yyyy-mm-dd hh24:mi:ss') -
to_date(DECODE(TA.DATEA,
'null',
TO_CHAR(SYSDATE, 'YYYY/MM/DD'),
TA.DATEA),
'yyyy-mm-dd hh24:mi:ss') > 180) L1) L2
建表语句:
Create table
create table TA
(
ID VARCHAR2(10) default '' not null,
NAME VARCHAR2(20) default '' not null,
DATEA VARCHAR2(20) ,
DATEB VARCHAR2(20) ,
SCORE VARCHAR2(20)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64
minextents 1
maxextents unlimited
);
-- Add comments to the table
comment on table TA
is 'TEST';
-- Add comments to the columns
参考资料:12070816
热心网友
时间:2022-04-08 04:58
如果格式固定,是很简单的
to_date('2011-10-21','yyyy-mm-dd')追问提示我,年份值必须在-4713和9999之间,且不能为0
追答select *
from tablename
where nvl(to_date(b,'yyyy-mm-dd'),sysdate)-to_date(a,'yyyy-mm-dd')>180
热心网友
时间:2022-04-08 06:50
CONVERT(int,to_date('2011-11-22','yyyy-mm-dd') )