发布网友 发布时间:2022-04-21 05:36
共3个回答
热心网友 时间:2022-04-10 17:49
首先来说,从输入的参数2012/2这种格式我用标准化的参数输入201202来代替,
阿婆主的意思是想要这样查询的SQL是吧。那么请看下面:
select * from [table_name]
where case when length(输入参数)=4 then time >= to_date('输入参数||0101','YYYYMMDD') and time <= to_date('输入参数||1231','YYYYMMDD')
case when length(输入参数)=6 then time >=to_date('输入参数||01','YYYYMMDD') and
time < to_date('(输入参数+1)||01,'YYYYMMDD')
case when length(输入参数)=8 then time = to_date('输入参数','YYYYMMDD')
这里值得注意的是:
1.在第2个case when的时候,容易出现12月份+1之后变成13,可以自己进行一下处理,大体的思想应该是一样。
2.输入的参数不是2012/2/2这种形式,二是20120202这种形式,那么你也可以根据你自己的需要。进行一些调整。
如果满意请给分
热心网友 时间:2022-04-10 19:07
oracle的Sql支持Date类型的字段like的,举个例子,A表有一个字段Time,要查询Time时间在2012年的select * from A where Time like To_Date('2012','yyyy')||'%'
如果要查询2012/2的就改为
select * from A where Time like To_Date('2012/02','yyyy/MM')||'%'
判断输入字符长度更改后面格式化就可以
还有一种解决办法,数据库中的时间字段Trunc后To_Char 再 like(不trunc也不会有影响)
select * from A where To_Char(Trunc(Time),'yyyy/MM/dd') like '2012/02%'
或者
string vSql = “select * from A where To_Char(Time,'yyyy/MM/dd') like '”+TextBox.Text.Trim()+“%'
热心网友 时间:2022-04-10 20:42
利用IF 语句判断输入 条件 使用ORACLE的 TO_CHAR转换相应的日期字段格式
where to_CHAR(field1,'yyyy/mm') = '2012/02'
where to_CHAR(field1,'yyyy/mm/dd') = '2012/02/02'
需要*输入的日期格式 月份,日最好用两位的 ,不然需要代码判断后修改