SQL语言中,如何把字符串类型的数据转换成整型用来比较大小,比如说,我定义了一些日期,但是varchar2格式的,现在我想比较日期A-日期B>180,因为原来日期A和日期B都是varchar2,这样是没法比较的,所以想转换为整型之后进行比较,有什么函数没?大家好,刚才我把问题描述的可能不清楚,我再描述一下吧,以下这张表叫做TA,各变量如下所示:ID name dateA(varchar2) dateB(varchar2) score(number)1 甲 2011/4/10 2011/6/10 402 乙 2011/6/10 2011/6/10 303 丙 2011/6/10 2011/6/10 104 甲 2011/4/10 2011/10/20 405 丙 2011/6/10 2011/6/10 806 甲 2011/3/10 2011/11/10 407 甲 2011/3/10 null 408 丁 2011/4/10 null 30我想要的结果是找出,一共有几位同学满足条件dateB-dateA>180,并且把这些同学对应的分数相加,其中null就代表今天2011-11-22。因此,一共有2位同学满足条件(分别为甲和丁,甲是第4、6、7条数据满足条件,乙是第8条数据满足条件,其中甲为40分,丁为30分),他们对应的分值之和为70分。现在的问题是2位同学中的2如何找出来,分值之和70分如何算出来啊?
比较日期是不需要通过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') >180oracle环境下测试通过
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 tablecreate 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
如果格式固定,是很简单的to_date('2011-10-21','yyyy-mm-dd') 追问 提示我,年份值必须在-4713和9999之间,且不能为0 追答 select * from tablenamewhere nvl(to_date(b,'yyyy-mm-dd'),sysdate)-to_date(a,'yyyy-mm-dd')>180